5.6で、編集時以外だけ jQueryをオーバーライドできますか?

2015年7月2日 at 16:31

5.6で制作したサイトにおいて、編集時以外は jQueryの新しいバージョンを読み込ませるようにすることはできるのでしょうか?

実は、5.6のサイトにおいてBootstrap3でテーマを作ってしまったため、スマートフォン閲覧時のドロップダウンメニューなどにおいて jQuery1.9 以上が必要になってしまいました。(グリッドが正しく機能していたので気づきませんでした)

ルート直下のjsディレクトリにjQuery1.9を置いたらドロップダウンメニュー等が機能するようになったのですが、今度は管理画面でブロックの編集に問題が出るようになりました。

よろしくお願いいたします。

タグ:

Re: 5.6で、編集時以外だけ jQueryをオーバーライドできますか?

2015年7月2日 at 18:33
管理画面なのか編集モードなのかによっても変わってきますが…

まずルート/jsに置いたjQuery1.9は、どのように読み込んでますか? テーマでハードコーディングですか?

その場合は、編集モードでのみ1.9を無効にしたいのであれば、isEditMode()で判定できるんじゃないでしょうか。

参考:http://qiita.com/katzueno/items/256e3a971c294922d598

ただ、テーマでハードコーディングしている場合は、ログイン時にconcrete5が出力するjQueryとバッティングすると思うので、そこはどうされているのでしょう?
 

Re: Re: 5.6で、編集時以外だけ jQueryをオーバーライドできますか?

2015年7月2日 at 22:01
しかたさん、ありがとうございます。
jQueryをテーマで読み込んではいけないと散々言われているので(笑)、オーバーライドはConcrete5の仕組みを使って、ルート直下のディレクトリを使用することで行っています。

結果的に、katzさんの方法で解決できました。
 

Re: 5.6で、編集時以外だけ jQueryをオーバーライドできますか?

2015年7月2日 at 18:39
編集バーがみえているユーザーは concrete5 の古い jQuery を読み込んで、編集バーが見えていないゲストを含めたユーザーは、新しい jQuery を読み込むということでいいでしょうか。

編集バーが見えていない時は、新しい jQuery を読み込むといった動作でいいでしょうか?
http://ja.katzueno.com/2014/05/3104/
の「// 編集ツールバーが見えたときの条件分岐 (テーマや、ブロックの view.php内:5.6.x 以降)」のコードを利用して

/concrete/elements/header_required.php

/elements/header_required.php
にコピーして、その中にある
$this->addHeaderItem($html->javascript('jquery.js'), 'CORE');

というコードを上記の PHP を適用させることによってできますね。

そうするとこんなかんじになります
http://gist.github.com/katzueno/21ccf8f3f526b6ebd174
該当箇所に、新しい jQuery の絶対パスを入れてあげてください。

元々のファイルから変更した部分はこちらです
http://gist.github.com/katzueno/21ccf8f3f526b6ebd174/revisions

ちなみに、これで header_required.php という部分を concrete5 でオーバーライドしたので、次回アップデートする際は気をつける必要があります。
 

Re: 5.6で、編集時以外だけ jQueryをオーバーライドできますか?

2015年7月2日 at 21:57
katzさん、ありがとうございます。
まったくその通りの動作をさせたかったので、教えていただいた方法で解決できました。

仕組みもわかったので、バージョンアップの際も忘れなければ問題なさそうですし、応用もできそうです。
 

Re: 5.6で、編集時以外だけ jQueryをオーバーライドできますか?

2015年7月2日 at 18:43
しかたさん。

ありがとうございます!ニアミスですね( ̄ー ̄)ニヤリ

isEditMode だけでは不十分です。
isEditMode だけだと、「編集モード」ボタンが押せなくなって編集モードに辿りつけない可能性があります。

あと jQuery.js は header_required.php で読み込むよう設定してあるので、
header_required.php をオーバーライドさせてあげなければいけないのでございまする。
 

Re: 5.6で、編集時以外だけ jQueryをオーバーライドできますか?

2015年7月2日 at 18:45
なるほど、上記やり方のほうがスマートですし、確実ですね。