メインコンテンツに移動

メインナビゲーション

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

パンくず

  • ホーム
  • Drupal8: W3.CSSのカスタマイズ:モジュール(Display Suite)を利用してcssルールの追加

Drupal8: W3.CSSのカスタマイズ:モジュール(Display Suite)を利用してcssルールの追加

css
drupal
display suite
w3css

問題点:Drupal8のW3.CSSの管理設定可能な部分は少ない

  • W3.CSSモジュール:Drupal 8 W3CSS Theme 8.x-1.16
  • W3.CSSの管理画面:ホーム » 管理 » テーマ » テーマの設定
  • 管理できる項目はコンテンツの色、メディアリンクなどぐらいです
    • W3.CSSの豊富なコンポーネント(例:Card、Selectionなど)の直接な設定はできない
  • W3.CSSの各種コンポーネントを理由するため、Sbu-Themeを作成してstyle.cssにcssルールを作成することができます
    • 以下のページはW3.CSSのsub-theme利用の説明:「Drupal8のw3cssテーマ改造1:フォントサイズ(font-size)の変更、設定 (508)」

やりたいこと:フロントページに各記事ブロックをW3.CSSのCardで表現

  • 以下はW3.CSSのCardで表現する前後のイメージ
    ブロックをW3.CSSのCardで表現比較
  • このブロックはFiedのTeaserを利用したので、W3.CSSテーマ管理画面(ホーム » 管理 » テーマ » テーマの設定)では管理設定できません

解決:モジュール(Display Suite)を用いてTeaserをラップしてW3.CSSのクラスを設定

  • モジュール:Display Suiteがよく利用されるモジュールです
    • Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化 
    • Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする (167)
  • コンテンツの表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理 » ティーザー)からDisplay Suiteを有効かして、カスタムクラス(Manage region and field CSS classes)にW3.CSSのクラスを追加します
    w3-card-2|w3 card-2
    w3-hover-shadow|w3 Hover Shadow

    Regionsにw3cssのCardクラスを追加

  • 同一コンテンツ管理画面の「Cstom Class」タブの「Class for layout」で設定したW3.CSSのクラスを選択します
    W3.CSSのクラスをTeaserのラップDIVに追加

 

 

drupal
theme

Drupal8でw3cssテーマ(theme)の初期フォントサイズ(font-size)設定が大き目になっているので、調整する必要があります。

Drupal8のw3cssテーマ設定画面(ホーム >> 管理 >> テーマ >> Appearance settings >> w3_css theme)では、フォント関連設定項目がないようで、cssスタイルで設定したほうが良いでしょう

サブテーマ(sub-theme)でフォントサイズ(font-size)を設定

  • w3cssのサブテーマを作成します
    • Drupal8のサブテーマ作成について「Drupal8のテーマ(theme)の構造及びディレクトリの整理 」をご参考
  • 作成したサブテーマのcss定義(例:style.css)にフォントサイズを再定義します
    h1{font-size:28px;}
    h2{font-size:24px;}
    h3{font-size:20px;}
    h4{font-size:18px;}
    h5{font-size:16px;}
    h6{font-size:14px;}

     

  • css定義更新後に、Drupal8のキャッシュクリアを忘れずにしてください

見出し(H1)のフォントサイズが変わらない問題

  • 見出し(h2)などが順調に変更できました
  • 見出し(h1)が変わらないことを気づきました
  • ブラウザの開発ツールで見出し(H1)を確認します
    w3cssの見出しH1のフォントサイズ設定
  • 見出し(H1)のフォントサイズ設定はcssクラス:w3-xxlargeで管理しているようです

解決:サブテーマのcss定義でh1.w3-xxlargeクラスを再設定

  • 見出し(H1)を限定して、w3-xxlargeのフォントサイズを設定します
    h1, h1.w3-xxlarge{font-size:28px!important;}
    h2{font-size:24px;}
    h3{font-size:20px;}
    h4{font-size:18px;}
    h5{font-size:16px;}
    h6{font-size:14px;}

     

  • 「w3-xxlarge{font-size:28px;}」のような設定を避けたほうが良いでしょう。なぜならば、ここで見出し(H1)のフォントサイズを再定義、ほかの部分のw3-xxlargeの定義を変更するつもりはありません
  • これで、見出し(H1)のフォントサイズが順調に変更されました
  • 開発ツールで見出し(H1)のフォントサイズがオーバーライドされました
    w3cssの見出しH1のフォントサイズオーバーライド
drupal
drupal

Durupl8ではテーマは単独のディレクトリで管理

  • Drupal8のテーマ(theme)がモジュールのインストール/アンインストール(機能拡張)の部分でインストールすることができます
    • 「テーマ」管理画面でも「新しいテーマのインストール」ボタンをクリックして、インストールすることがもできます
  • 通常モジュールのフォルダー(drupal8/modules)と違って、単独のフォルダー(drupak8/theme)で管理しています
    Drupal8はモジュール/テーマは別フォルダー

インストールしたテーマ(theme)にカスタマイズのため、サブテーマ(sub-theme)の作成ができます

  • いろいろテーマをインストールすることができます
  • インストールしたテーマの一部分をカスタマイズをしたいことがよくあります
    • 例:個別の詳細をcssで定義して、cssファイルをテーマに追加したい
  • Drupalでは複数のサブテーマ(sub-theme)を作成することができます
  • 複数のサブテーマを並列/直列して親テーマに継承することができます
    Drupalの複数のサブテーマを直列/並列で
  • 子テーマが親テーマの要素を継承します
    • 子テーマで各要素の再定義、追加などができます

テーマ/サーブテーマのディレクトの集約ができます

  • 初期のテーマディレクトリにインストールした複数のテーマが入っています
  • サブディレクトもテーマディレクト(drupal8/theme)に作成して保管しています
  • 複数のテーマをインストールして、複数のサブテーマを作成したら、フォルダー数が多くなり、どっちがサブテーマかはわかりづらくなります
  • ここで、元のテーマを集約するディレクトリ(contrib)、とカスタマイズのサブテーマのディレクトリ(custom)を作成して、集約することができます元テーマ/サブテーマのディレクトリ集約
    • themes
          +-- contrib
                   +-- theme 1
                   +-- theme 2
                   +-- theme ・・・
          +-- custom
                   +-- sub_theme 1
                   +-- sub_theme 2
                   +-- sub_theme ・・・
       
  • 作成された集約ディレクトリ(例:contrib, custom)、各テーマ/サブテーマのディレクトリを移動します
    • 移動後に各テーマ/サブテーマの構成ファイル(例:_info.yml)の定義の修正(ディレクトリ名に合わせ)必要はありません

 

css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
css
drupal
javascript
block
bug
views
jQuery

問題点:Bootstrap導入後にモジュール(Better Exporsed Filters)のレイアウトが崩れました

  • Drupal:7.53
  • Views:7.x-3.14
  • Better Exporsed Filters:7.x-3.4
  • モジュールViewsのExposed Filterがよく利用されると思います。特により機能良いBetter Exposed Filtersの導入で、選択肢セレクトからチェックボックスでの利用ができ、検索用の「適応」ボタンを外すことができます
  • ここで、Bootstrapを導入したら、Better Exposed Filtersの外観が崩れました

原因:Better Exposed Filtersの検索フォームの要素、プロパティがBootstrapテーマに書き直されました

  • Bootstrap導入より、Better Exposed Filtersの検索フォーム(選択肢ブロック)の要素、プロパティが書き直されました
    • 選択肢ブロックに「form-control」クラスが追加されました
    • Bootstrapの「form-control」クラスがブロックの高さ(height)が定義しています
  • 「form-control」クラスがブロックの高さ(height)を消せば、通常の検索フォームに戻ります

他にいろいろな要素の確認が必要

  • Bootstrap導入より、Better Exposed Filtersのレイアウトへの影響は上記だけではなく、いろいろ部分に影響を与えています。
  • style.cssで各要素の上書き対応が必要となります
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
Views

問題点:モジュール(Views)での外部設定フィルターの複数の選択肢UIはリストのみとなっています

  • 背景:Drupal7.55、Views7.x-3.16
  • モジュール(Views)の外部設定フィルターにある複数の選択肢はリストとなっています
  • リストから複数の選択肢を選択しずらいことがあります
    • Shift/Ctrlを押しながら選択する必要があります
    • スマホでは複数の選択は難しいです
  • リスト選択肢をチェックボックス/ラジオボタンに置き換える必要があります
    Viewsの外部設定フィルターのリスト選択肢をチェックボックスで置き換える

モジュール(Better Exposed Filter)でチェックボックス/ラジオボタンを導入します

  • モジュール(Better Exposed Filter)のインストール/有効化をします
  • Viewsの設定画面で 高度⇒外部設定フォーム⇒ 外部設置フォームのスタイル を「Better Exposed Filter」に設定します
  • 他にいろいろな細かい設定は省略します

 

Embedded thumbnail for Drupalのモジュール(Views)の外部設定フィルターにあるリスト選択肢をチェックボックスで置き換える
drupal
video
module usage
Views

モジュール(Views)の外部検索フィルターの検索条件入力がない場合すべてのコンテンツ表示する

  • モジュール(Views)での外部検索条件(ユーザーが検索条件を入力する)の設置ができます
  • 検索入力フォームに検索条件入力がない(検索の初期画面)場合、ほかの検索条件に合致したコンテンツをすべて表示します
  • 検索条件がない場合すべてのコンテンツを表示させたくないことが良くあります

モジュール(Views)の外部設置フォーム設定の「必須入力」を選択すれば初期検索画面にコンテンツはしません

  • モジュール(Views)の管理画面: 高度 >>  外部設置フォーム >> 外部設置フォームのスタイル を開きます
  • 外部設置フォームの「入力必須」条件を選択します
    Views外部設置フォームの「入力必須」を選択すれば初期検索画面にコンテンツが表示されない
  • 但し、検索画面で検索条件入力がないときに「適応」ボタンをクリックすると、すべてのコンテンツが表示されます
    • コンテンツのタイトルに検索条件なしの場合全件検索とみなされています

モジュール(Views PHP)で条件検索入力をチェックした結果でコンテンツ表示させないことができます

  • モジュール(Views PHP)のインストール/有効化します
  • ViewsフィルターにグローバルPHPを追加し、以下のコードを追加します
    if( strlen($view->exposed_input['title'])==0 ) {
      return TRUE;
    }
  • PHPフィルターの返却値がTrueの時にそのコンテンツ表示はしない
  • 注意:データ量が多いときにこの方法ではパフォーマンス問題があります
Embedded thumbnail for Drupalモジュール(Views)の外部設置フォームの検索入力がないときにコンテンツ表示させない方法
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
node
field
javascript
jQuery

モジュール(Background Images Formatter)を利用して、記事にアップロードした画像を記事のバックグランドにすることができます。本サイトでは、何らかの原因でBackground Images Formatterの表示設定時にエラーが発生して(Ajaxの設定なのでエラーメッセージも表示されなかった)、このモジュールの利用はできませんでした。

モジュールを利用せず、簡単なCSSとJavaScriptで対応することになりました。

やりたい事

  • Nodeタイプの記事にイメージフィールドを必須入力項目として定義します。
  • 記事ごとにアップロードしたイメージをバックグランドにセットして表示します。
  • どんなイメージがアップロードされるのは予測できないので、文書をはっきり読めるため、画像レイヤーと文書レイヤーの間に、半透明(25%の透明度)のレイヤーを入れます。

画像をバックグランドに

  • コンテンツのImageフィールド表示設定で、このフィールドのラッパーcssクラス名(例:content-background-div)を設定します
  • ページのcssファイル(style.css)で上記Imageフィールドを非表示(例:content-background-div{ display:none } )に設定します
  • 文書を表示するエリアのdivのcssにjQuieryでbackgroundを設定します
    • Panelsで以下のJSコードをこのページに追加します(JSコード追加にはPanels CSS & JSモジュールが必要です)
        var img_url = $('#content-background-div img').attr('src');
        $('.page-content #block-system-main').css({     // 記事を表示するエリア
          'background-image': 'url("'+img_url+'")',
          'background-repeat': 'no-repeat',
          'background-size': '100% auto',
          '-moz-background-size': '100% auto',
          '-webkit-background-size':'100% auto' 
        });
      
    • Panelsを利用しなければ、Display Suiteモジュールのダイナミックフィールドを利用して、JSコードをパスすることができます

半透明なレイヤー追加

  • 上記バックグランド画像設定したdivの子divにbackground-colorをcssファイル(style.css)で設定します
    #node.node-article{
        background-color:        rgba(255,255,255,0.75);
    }
    

文書レイヤー

  • 文書フィールドはそのまま表示します
  • フィールドの表示に必要に応じて、cssて調整します
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
data import

Drupalの部分的なコンテンツデータを別のDrualサイトに移行する場合そのコンテンツの構造定義とコンテンツCSVデータのエクスポート/インポートができます

  • 背景:Drupal7.54
  • Drupalのサイト引っ越しなどでデータ移行の必要があります、以下の移行方法はよく利用されます。
    • Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います (162)
    • 同じDrupalバージョンの単一サイトを複数サイト(ドメイン)の一つDrupalの共有ソースサイトへの移行チャレンジ (161)
  • ただし、部分的なコンテンツしか移行しない場合、上記方法では難しくなります
  • ここで、コンテンツ定義とデータを別々でexport/import方法を説明します
    DrupalのコンテンツコウセイとデータのExport/Import

Drupalのモジュール(Bundle copy、 Taxonomy CSV import/export)でコンテンツの構成/定義をExport/Importします

  • モジュール(Bundle copy)でコンテンツの構成/定義を簡単に移行します(具体的にステップは省略)
  • タクソノミーのタームの構成(フィールドが追加など)が変わらなければ、モジュール(、Taxonomy CSV import/export)でタームリストデータをcsvファイルの出力することはできます
    • 出力したCSVデータの別のサイトにインポートする場合、タクソノミーのボキャブラリーとタームIDが変わった可能性があります
    • コンテンツのフィールドに「Term Reference」タイプのものがあれば、コンテンツ追加/編集ボタンをクリックすると、「HTTP ERROR 500」エラーが発生するかもしれないです
      Term Referenceのフィールドがインポートされて以前のボキャブラリーIDを合わずエラーとなります
    • 一番簡単な対応方法ではそのフィールドを一回削除して、再作成すればよいです(データインポートする前の段階)

Drupalのコンテンツ構成(フィールド)テーブルのデータをcsvフォーマットに出力します

  • 現時点ではコンテンツのデータをcsvに出力するモジュールはあまり見当たらにです
  • コンテンツのフィールドをDB上各テーブルを見つけ出します
    • コンテンツ(例:Article)のフィールドごとに一つのテールが存在しています
    • Title ➡ nodeテーブルの「title」フィールド
    • body ➡ field_data_bodyテーブルの「body_value」フィールド(またはbody_summaryなど)
    • カスタムフィールド ➡ field_data_CUSTOM_FIELD_NAMEの「field_data_CUSTOM_FIELD_NAME_value」フィールド
  • これらのテーブルを「node」テーブルを中心してジョインして、新しいテーブルの書き込みます
    • すべてのコンテンツは「node」テーブルを基本にしています
    • 各フィールドのテーブルに「entity_id」がnodeテーブルの「nid」の関連付けキーとなります
    • 全フィールドと同じフィールドの新しいテーブルを一つ作成します(例:new_table)
    • 全フィールドをJOINしてデータを新しいテーブル(例:new_table)にコピーします
      INSERT INTO new_table (title, body, CUSTOM_FIELD_NAME,   ・・・・・・)
      SELECT 
         title,
         body.body_value,
         T1.field_data_CUSTOM_FIEDL_NAME_value,
        ・・・・・・
      FROM node
         left join field_data_body body on nid = body.entity_id
         left join field_data_CUSTOM_FIELD_NAME  T1  on T1.entity_id = nid
        ・・・・・・
        
  • 新しいテーブル(new_table)の内容をcsvフォーマットに出力します

Drupalのモジュール(Feeds Import)でコンテンツcsvデータをインポートします

  • モジュール(Feeds Import)がよく利用されるものなので、簡単にcsvデータを確認コンテンツにインポートすることができます
  • Feeds Importの説明は省略します(Drupalのモジュール(Feeds)で手動でデータインポート時の必須設定 (199)、FeedsモジュールでEnityにデータインポート (34)などを参考にしてください)
drupal
video
development
feature
module usage

モジュール(Feature)が開発ソース管理、コンテンツデータ移行などに利用されます

  • 最初モジュール(Feature)が何に使うかはあまりわからなかったです(いろいろな説明がちゅ抽象的)。
  • 実はDrupalの開発ソース管理(例:開発環境ー>ステージん環境ー>本番環境)、コンテンツデータの移行に使用されます

データ移行例:コンテンツデータ(Article)+Viewsで作成したコンテンツ検索一覧画面

  • データ移行の簡単な例として、既存のコンテンツデータ(例:Article⇒記事)、Viewsで作成したコンテンツ一覧画面を移行します
  • コンテンツデータ移行に必須なモジュール:
    • Feature
    • Node Export (FeatureモジュールにサポートするNode export featuresサブモジュールを有効化)
  • Feature管理画面で必要なモジュール、モジュールの関連、コンテンツデータを選択して、一つのモジュールとして作成し、ダウンロードします
  • 作成されたモジュール(tarファイル)を移行先で通常のモジュールインストールをして、有効化を行います。Feature管理画面で移行元の内容を適用、保存します
  • 具体的な操作はビデオをご参考ください

FeatureがDurupalのすべての設定、構成の移行はできません

  • 移行はモジュール単位で、構成は出力可能なものを中心にしています。以下は移行可能な部分
    • Core : Content Types、 Fields、 Menus、 Taxonomies、 Text formats、 Image styles、 User roles 、 permissions
    • Contribute: Views、 CTools、 Context 、 Panels、 Rules 、 Contexts、 Display Suite
  • 移行できない部分は、例:テーマ、コンテンツに挿入した画像などがあります
    • コンテンツに含まるメディア(例:写真、ビデオ、ファイルなど)がローカル(sites/default/files)に保存したため、移行先の保存パス修正、およびメディアファイルのコピーが手動で行う必要があります
Embedded thumbnail for Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行います
drupal
development
module usage

Drupal共有ソースサイトへの移行計画

  • Drupal7で複数のサイト(ドメイン)を構築しました。それぞれのバージョンアップ、ソースのバグ管理に手間がかかります。
  • 一つの共有ソースにすれば、Drupalのバージョンアップ、ソースのバグ管理に効率は良いと考えられています
  • 例:以下イメージのようにサイト移行
  • サイト移行時の両側の違い:
    • Drupalのバージョンは同じ:7
    • モジュール:共有ソース側の方が多い、また同じモジュールに違うバージョンが存在している可能性があります
    • DB:移行先に各サイトは別々のDBで違うコンテンツを有します

サイト移行の一番大きな問題点:メディア保存のフォルダが変わる

  • サイト移行にどんな方法を使っても、元サイトのメディア(例:写真など)保存フォルダー(sites/default)が、共有ソース側に別名のフォルダ(それぞれのサイトのメディア保存フォルダ)に変わります
  • 元サイトにあるメディア(写真、ファイル、ビデオなど)のパスが共有ソース側に移行先フォルダ名で書き換えなければならないです

移行方法1:共有ソース側で新規サイトを構築して、Featureモジュールで旧サイトの設定、Node Exportモジュールでコンテンツを移行します

  • 共有ソース側で以降先のフォルダ(例:pine ⇒ sites/pine)を作成します
    • defaultフォルダ(sites/default)にあるdefault.settings.phpをコピーして、移行先のフォルダ(pine)にペストし、settings.phpに名前を変更します
    • sites.php(sites/sites.php)設定ファイルに移行元のドメイン名とフォルダ名を関連つけます(設定方法:「Drupalのソースを共有する複数サイトの構築」をご参考)
  • 設定されたドメイン名で新サイトへアクセスし、Drupalのインストール手法で新しいサイトを構築します(新しいサイト、移行元のものはなにもない状態)
  • モジュール(Feature)で元サイトの設定を移行します(Drupalのモジュール(Feature)を用いてサイト間のデータ移行/開発管理を行いますをご参考)
    • すべての元サイト設定移行はできません。例:テーマの設定が最初からやり直しが必要はあります(結構手間がかかる作業)
  • モジュール(Node Export)でコンテンツ(例:Article)を元サイトから出力して、移行先にインポートします
    • 大量なコンテンツがある場合、Drushのコマンドで出力したほうが良いでしょう
    • コンテンツに含まれている画像、ビデオ、ファイルなどのパスを移行先のフォルダ名に合わせて変更しなければならない(今回:sites/default ➡ sites/pine すべてのパスを検索して、変更)
  • 元サイトのメディア保存フォルダ(sites/default)にあるすべての内容(settings.php除外)を移行先にフォルダ(sites/pine)にコピーします
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います

移行方法2:元サイトのDBとメディア保存フォルダを移行先にコピーします

  • 元サイトのすべてのものをそのままで移行先にコピーできれば、一番楽です
  • 重要なのは、両サイトが側のDrupalバージョン、モジュールバージョンが完全一致していれば、うまく行きます
    • バージョンが合わなければ、移行後にサイトからエラーがでて、完全に動かなくなりことがあります(以下のエラー例で、実は一つのモジュールバージョン差で引き起こされています)
    • 移行する前にモジュールのバージョン合わせに十分に気を付ける必要はあります
    • もちろん、移行先にでのモジュールバージョンを変えると、他のサイトにも影響を与えるので、調整が必要となります
  • 移行する前に、移行先と移行元のDB、メディアファイルフォルダ(sites/default)の内容をバックアップします(うまく行かなければ、バックアップで戻します)
  • 移行するサイトのすべてDBテーブルをSQL文に出力(MySql:mysqldump)します
    • 出力されたファイルにあるすべてのメディア保存フォルダパスを移行先のフォルダパスに書き換えます(sites/default ➡ sites/pine)
    • もしドメイン名も変わる場合、新しいドメイン名で古いのを書き換えます
  • 移行元のメディア保存フォルダにすべての内容(settings.phpも含む)、移行先にのメディア保存フォルダにコピーします(sites/default ➡ sites/pine)
  • 移行先でファイルシステム設定画面(ホーム » 管理 » 環境設定 » メディア » ファイルシステム)の元サイトと同じファイルパス設定を行います
  • ブラウザで移行先のページにアクセスし、管理者権限でデータベース更新(http://your-site-domin/update.php)を行います(Drushでも更新可能)

結論:新規サイト構築はエラーが少ないが手間がかかります。DBコピーは便利だがエラーが出やすいです。

  • 安心で、きれいに移行する場合新規サイトを構築したほうが良いでしょう。多少手間がかかっても、難しいことは少ないです
  • DBコピーの方式は上級者向けですね。常にエラーの調査、修正にが必要となります
drupal
feeds
module usage

注意点:Drupalのモジュール(Feeds)の設定が間違うと手動でデータインポートができなくなります

  • 環境:Drupal7.54、Feeds7.x-3.0
  • やりたいこと:手動でデータをインポート(例:csvファイルからのインポートなど)
  • Feedの基本設定のところある二か所をチェックしないと手動でのインポートができない
    • 添付するコンテンツタイプ:スタントアローンのフォームを使う
    • 投稿時にインポート
      Drupalのモジュール(Feeds)の設定が間違うと手動でのインポートができない
    • 初期としてはこの二つ設定を有効にしています
  • ちなみに、「投稿時にインポート」を無効の場合、バッチでデータインポートすることになります(バッチの設定が必要)
  • 添付するコンテンツタイプ:「スタントアローンのフォームを使う」以外の選択肢を選択すると、インポート画面(ホーム » インポート)に当該インポーターはありません

手動でインポートできないときに画面上に「インポートされた項目はありません」が表示されます

  • 「投稿時にインポート」オプションが無効の場合、手動でデータインポートはできません
  • インポートデータがあるにはかかわらず、画面上に「インポートされた項目はありません」として表示されます
  • バッチにインポートジョブを入れたメッセージはありません
drupal
drupal
customization
feeds
data import

目的

  • Entity Typeデータにほかのデータ(例:csv、xmlなど)からのインポートを可能にする
  • Feedsの初期データ変換プロセッサーに「Entity Type」のものがなかった

解決の選択肢

  • Feed Importモジュールでのデータインポート
  • Feedsモジュールのカスタマイズをする

ここでの解決:Feedsのカスタマイズ

  • インストールされたモジュール
    • Feeds :  7.x-2.0
    • ECK  :  7.x-2.0
    • Entity API :  7.x-1.5
  • 上記モジュールのインストールと有効化
  • ECKでインポートデータタイプとBundleを作成する
    • 例: データタイプ:「組織データ」、Bundle:「xxxの組織データ」
    • 「組織データ」のプロパティ:title、uid、created、changedを使用する
    • 「xxxの組織データ」のフィールド:「組織コード」、「正式組織名」をテキストフィールドで追加

Feedsの紹介

  • Feedsが三つの部分から構成される:Fetcher、Parser、Processor
    • Fetcher:インポータデータの取得(例:File upload、external RSS Feedなど)
    • Parser:インポートデータの解析方法の指定(csv、xls、xml、RSSなど)
    • Processor:インポートデータの作成(Node、terms、usersなどのデータ作成)

 

FeedsにEntity Typeデータ変換プロセッサーに追加

  • PatchファイルをFeedsモジュールに当てる
  • Feedsのデータ変換プロセッサー設定画面にEntity Typeのデータ変換プロセッサー追加前後のイメージ
添付 サイズ
feeds_entity_processor-1033202-217.patch_.txt (16.03 KB) 16.03 KB
drupal
video
display suite
module usage
template

やりたいこと:コンテンツの表示レイアウト/フィールドを自由変更したいです

  • 既存のNode表示システムでは、レイアウト/フィールドなどの表示を変更したいです
  • 例:Drupalのモジュール(Display Suite)のフィールドTテンプレート(Field Template)で各フィールド表示の調整 

解決:モジュール(Display Suite)の導入

  • モジュール:Display Suite-7.x-2.14
  • モジュールを通常の方法でインストール、有効化します(ビデオをご参考ください)

DSのフィールドテンプレート(field template)の有効化

  • モジュールインストールだけでフィールドテンプレート(field template)は有効になっていません
  • DS(Display Suite)の管理画面(ホーム » 管理 » サイト構築 » Display Suite » Extras )でField Templateタブにある「Enable Field Template」をチェックします
  • 他のオプションが初期設定のままでよいです

コンテンツの表示管理画面でカスタムレイアウトを選択しないとフィールドテンプレートが有効になりません

  • コンテンツ表示管理画面(例:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下に、「Layout for article in default」タブで適切なレイアウトを選択します
  • 各フィールドの右側にフィールド表示オプションボタンをクリックすると、Field Template選択肢が現れます
  • 必要に応じ、cssよろ各フィールドの表示設定ができます
Embedded thumbnail for Drupal7のモジュール(Display Suite)のインストールおよびフィールドテンプレート(Field Template)の有効化
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
display suit
module usage

やりたいこと:コンテンツの各フィールドごとをdivなどのタグでラップしたり、cssクラス、属性を追加したいです

  • Drupalのnodeシステムでは、表示設定で自由に各フィールドをラップdiv、cssクラス、属性の追加はできない
  • 各フィールドが表示都合よりラップしたり、cssクラスの追加が必要となります

解決:モジュール(Display Suite)のフィールドテンプレート(field template)を有効化にします

  • モジュール(Display Suite)のインポート、有効化をします
  • Display Suiteのフィールドテンプレート(field template)を有効化にします

モジュール(Display Suite)のフィールドテンプレート(field template)で各表示フィールドを修正例

  • フィールドをdivタグでラップしてcssクラスを追加します
  • cssクラス追加よりh2タグのcss適応、各要素の間隔を調整します
  • 具体的に設定方法をビデオでご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)のフィールドtテンプレート(field template)で各フィールド表示の調整
drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
display suite
Search

高度な検索オプションと検索結果を変更するために、モジュール(Display Suite)のサブモジュール(Display Suite Suite)を有効にします

  • モジュール(Display Suite)より、検索結果の表示変更、高度な検索オプション変更は可能
  • Display Suiteは表示上に非常に柔軟性のあるモジュールで、幅広く利用されています

検索結果に関する設定後に必ずキャッシュをクリアします

  • 一般的にモジュールより表示変更はサイトのキャッシュクリアする必要はありません
  • なぜかDisplay Suiteで検索結果画面の設定を変更したら、必ずキャッシュをクリアしなければならないです。

例1:検索結果をsearch-results.tpl.phpからTeaser表示に切り替えたい

  • 検索結果はテンプレート:search-results.tpl.phpで管理されているので、検索結果の変更には、このテンプレートの変更は一般的となります(ハードコーディング必要)
  • Display Suiteの導入より、上記テンプレートの変更必要はなくなります
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で検索モジュールを「Display Suite Search」に切り替えます
  • ホーム » 管理 » サイト構築 » Display Suite » 検索 管理画面で「ビュー・モード」をティーザーに変えます

例2:高度な検索オプションの一部分を隠したい

  • 初期の「高度な検索オプション」に検索可能なコンテンツが含まれています
  • 一般ユーザーが一部分のコンテンツタイプを知らないので、これらのオプション(例:パネル)を隠したいです。
  • ホーム » 管理 » 環境設定 » 検索とメタデータ » 検索の設定 管理画面で「ADDITIONAL NODE SEARCH CONFIGURATION」をクリックして、「コンテンツタイプを限定 SETTINGS」リンクをクリックします
  • 「Hide the following content types from the コンテンツタイプを限定 filter」の「パネル」をチェックして隠します
  • 検索画面上にある「高度な検索オプション」に「パネル」選択肢が非表示になっていることを確認します

 

drupal
video
display suite
module usage

Drupalのコンテンツ表示設定にレイアウトの変更はできない。すべてのフィールド表示はしていない

  • Drupalのコンテンツ表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)にある表示タイプ(例:全文)のレイアウト変更はできない
  • そのレイアウトのコンテンツのすべてフィールドが表示されていない(例:投稿日付、投稿者など)

モジュール(Display Suite)導入で、同一表示タイプに複数のレイアウト選択可能、隠されたフィールドの表示/設定が可能になる

  • Drupalのコンテンツ表示には大きな役割を果たしたモジュール(Display Suite)がぜひ利用してください
  • 通常の方法でDisplay Suiteをインストール/有効化します
  • コンテンツの表示管理画面(例:Article: ホーム » 管理 » サイト構築 » コンテンツタイプ » Article の「表示管理」)でDisplay Suiteのレイアウトが表示され、表示必要に応じ選択します
  • また、初期隠されたフィールドも表示されます。表示必要に応じフィールドを表示場所に配置します
  • 具体的な操作法はビデオでご参考ください
  • Display Suiteの応用に「シリーズ記事」をご参考ください
Embedded thumbnail for Drupalのモジュール(Display Suite)でコンテンツレイアウト変更、初期表示されていないフィールドの選択/設定が可能にする
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
ホーム

古松

検索

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)