Posted by wataru.kato on April 11, 2014 at 8:40am
Drupal7です。
ようやく本格的にDrupalの記事を皆で投稿し始めたのですが、
ノードを編集している最中に席を外したりした場合、
戻ってみるとそれまでに編集していた内容が全てキャンセルされており、
読み込み直後の状態に戻っている現象を確認しました。
これはDrupalのデフォルトの挙動でしょうか。
だとすれば、これを回避して基本的には編集中情報を維持し続ける方法がないものでしょうか。
多分ブラウザ依存ではなく、Drupal側の何かのモジュールが裏でAjaxで状態通信を行っていて、
ある条件になると自動的にページの再読み込みをしてしまうのだと思ってます。
ちなみに今までに以下のモジュールを試しましたが、
エラーログを大量に吐くようになる等あまり好ましい動きをしなくなったので採用を取りやめています。
1)Autosave (裏で自動保存する)
⇒大量に保存失敗ログを吐きはじめいったん止め
2)Keybord Shortcut Utility (キーボードショートカットでマメに保存できるようにする)
⇒モジュールを有効化したら、突然匿名ユーザーから全記事が閲覧不能になり、
驚いていったんモジュール無効、原因究明できておらず
Comments
・・・と、自分で投稿しておきながら
編集画面のソースのヘッダ部分を読んでいくと
meta http-equiv="refresh" content="3600;"
となっていました。6分ごとに再読み込みしてるんですね・・・
これが原因だと思うのですが、もしそうだとするとmetaタグの書き換えを何かのモジュールを使って実施すれば良いという事でしょうか。
その場合、使いやすいモジュールがあったら教えてください。
#metaタグの変更はなんだかいろんな種類のモジュールがあったような・・・
6分じゃなくて60分、そして解決
すいません、3600なら60分ですね。算数もできないとは;;
metaタグのrefresh記述をどのモジュールから行っているかの特定ができました。
普通に全ソースを http-equiv で内容検索していきました。
そうすると、いろんなモジュールからmetaタグを記述する仕様があることが勉強できましたが、
その中でたまたま私が利用していた
Automated Logout
のモジュールで、この記述を挿入していることが分かりました。自爆でした。
なのでこのモジュールを無効にすることで、上述のmetaタグ記述がでなくなっていることを確認できました。
おそらくこれで解決したと思われます。
しかしDrupalではmetaタグはモジュールが入れたり、テーマのテンプレート側に直接記述になっていたりして、他の機能に比べて構造的に扱ってないのですね。勉強になりました。
しかしDrupalではmetaタグはモジュールが入れたり、
かなり高度に構造化されていますよ。
構造化されているので、
Drupalコア > 数多のモジュール > オリジナルモジュール > ベーステーマ > などが追加したメタタグを干渉せずに引き継いで最終的に吐き出せています
もちろん、最終段階のご自分のテーマ内ですべてカスタマイズ可能です。
hook_preprocess_htmlなどで探してみてください。
なるほど
「構造的に扱ってない」という私の表現はよろしくなさそうですね、教えて頂いて有難う御座います。
お話を伺っていて、別でもアドバイスを受けましたCSSの適用構造の話と似た考え方になっているのかなあと理解しました。
そして、CSSだとCSS Injectorモジュールで個別ページの値を最終制御できていたのですが、メタタグには「meta Injector」はなさそうなので、Drupal APIが素人の私はメタタグの方がハードルが高いです;;
#hook_preprocess_html で検索して出た英語ページを読んでみましたが
#土台のAPIの知識がないので読み切れませんでした
もうすこし新規インストール直後のDrupalのサイトをいじり倒してみた方がいいのでしょうねえ。
ただ、今のところメタタグを修正する必要はなくなっているので、今後の宿題のつもりです。