メインコンテンツに移動
ホーム

古松

メインナビゲーション

  • ホーム
  • ビデオ
  • ご連絡

パンくず

  • ホーム
  • Drupalのモジュール(Fivestar)の利用及びリビジョンに反映されない問題

Drupalのモジュール(Fivestar)の利用及びリビジョンに反映されない問題

コンテントタイプにリビジョン(履歴)の保存/戻す操作ができる

  • Drupalのコンテントタイプ管理にリビージョン有効化/無効化設定ができます
    • 初期値:無効化
    • 有効化:ホーム » 管理 » サイト構築 » コンテンツタイプ » Article  » 編集に「掲載オプション」タブで「新しいリビジョンの作成」をチェックします
      コンテントタイプのリビジョン有効化
  • リビジョンが有効されたコンテントタイプの内容の変更履歴が保存されています
    • コンテンツタイプのビュータブの隣に「リビジョン」タブをクリックすれば、変更履歴一覧が表示されます
      コンテントリビジョン有効された場合に変更履歴が保存されます
    • 変更履歴の確認、「戻す」操作ができます

記事を評価するモジュール(Fivestar)の変更履歴がリビジョン反映されない

  • 評価モジュール(Fivestar)がモジュール(Vote API)の元で作成されました。かつ評価内容をフィールドに組み込みました
    評価モジュール:Fivestar
  • 但し、Fivestarの評価履歴はリビジョンに反映されないです(操作方法ビデオを参考)

Drupalの関数(field_attach_update)でフィールド更新する場合にリビジョン管理はできません

  • モジュール(Fivestar)の評価履歴管理できないのみにならず、関数(field_attach_update)を利用してコンテンツ内容変更する場合にリビジョンの管理はできません
    • Fivestarの評価動作を追跡調査してみました。
      // \sites\all\modules\fivestar\fivestar.module
      // 186行当たりに、Fivestarの評価結果保存
      function _fivestar_update_field_value($entity_type, $entity, $field_name, $langcode, $value) {
        $entity->{$field_name}[$langcode][0]['rating'] = $value;
        $entity->original = isset($entity->original) ? $entity->original : NULL;
        field_attach_presave($entity_type, $entity);
        field_attach_update($entity_type, $entity);
      }
      
    • 評価内容を関数(field_attach_update)で行っています
    • 関数(field_attach_update)の説明を読むと、データ更新は関数(field_sql_storage_field_storage_write)を呼び出して行います
    • 関数(field_sql_storage_field_storage_write)はフィールドのリビジョンを削除して、再作成のもとなります
  • 関数(field_attach_update)が個別のフィールド更新する機能が持っていますが、リビジョンの管理はできません
  • hook(例:hook_attch_update)を利用して、個別のフィールドのリビジョン更新方法は見つかりません
    • フィールドのリビジョンを更新するにはオブジェクト全体更新する必要があるようです(例:node_save(), entity_save())

検索フォーム

カテゴリ別

  • laravel
  • drupal
  • javascript
  • windows
  • html
  • mysql
  • php
  • apache
  • css
  • SEO
  • video
  • wordpress
  • linux
  • python
  • Electron
  • Visual Studio Code

google ads