C5DK TwentyTwenty Imageの不具合について

2019年11月4日 at 14:36

C5を8.5.2にアップしたら、添付画像のようにログイン状態では正常な表示がされるのに、ログアウト後、通常の表示にしたら画像が上下に表示されるようになりました。

ログイン状態のような正常に表示させる方法がありましたら、ご教示ください。

タグ:

Re: C5DK TwentyTwenty Imageの不具合について

2019年11月4日 at 20:28
Twenty Twenty Imageを使ったことがないのでわかりませんが、何かしらのJSの読み込みでエラー出ていませんか?
ログインしている時は読み込まれているものが、ログアウトすると読み込まれなくなったりする時があります。

registerViewAssetsでブロック使用時にJSの読み込みをさせてしまって対応してみてはいかがでしょう。
他に方法があるのかもしれませんが、自分はこの方法で対応しています。
 

Re: C5DK TwentyTwenty Imageの不具合について

2019年11月6日 at 15:05
ありがとうございます。
registerViewAssetsの具体的な対応方法をご教示いただけますでしょうか。
宜しくお願い致します。
 

Re: Re: C5DK TwentyTwenty Imageの不具合について

2019年11月6日 at 17:10
まずどのファイルが読み込めていないかを確認するのが先ですが・・・
アセットの登録をしてから読み込む感じです。

アセットの登録について
http://concrete5-japan.org/help/5-7/developer/assets/registering-an-asset/

アセットの登録は読み込めていないファイルを登録します。

登録したアセットを読み込むときは、ブロックのcontroller.phpに以下の感じで追加。

public function registerViewAssets($outputContent = '') {
$this->requireAsset('javascript', '登録したハンドル');
}

読み込むときに何かしらの条件があるならifで条件分岐してください。
「concrete5 registerViewAssets」で検索するといくつか参考にできるものが出てくると思うのでそちらで確認してみてください。
 

Re: C5DK TwentyTwenty Imageの不具合について

2019年11月12日 at 18:22
ありがとうございます。

参考ページを参照してやってみたのですが、うまくいきませんでした。
アセットの登録が間違っているのかも知れません。

どのJSが読み込めていないかは判明はしました。
フッターに読み込むべき記述がされていても読み込んでいないと言うことがあるということでしょうか?

application/bootstrap/app.phpに下記を記述しました。
-------------------------------------------------------------------------------------------------------------------------------------------
$al->register(
'javascript', 'c5dktwentytwenty', 'packages/c5dk_twentytwenty_image/js/jquery.twentytwenty.js'
);
-------------------------------------------------------------------------------------------------------------------------------------------
どのファイルに指定の文字列を追記していいのかわからないところがあります。

また、/packages/c5dk_twentytwenty_image/blocks/c5dk_twentytwenty_image/controller.phpに下記を記述しました。
-------------------------------------------------------------------------------------------------------------------------------------------
public function registerViewAssets($outputContent = '') {
$this->requireAsset('javascript', 'c5dktwentytwenty');
}
-------------------------------------------------------------------------------------------------------------------------------------------
上記を記述するとエラーメッセージが表示されます。
-------------------------------------------------------------------------------------------------------------------------------------------
Cannot redeclare Concrete\Package\C5dkTwentytwentyImage\Block\C5dkTwentytwentyImage\Controller::registerViewAssets()
-------------------------------------------------------------------------------------------------------------------------------------------
間違っている箇所があればご指摘ください。

下記をヘッダーに追記したら正常に表示されました。
<script type="text/javascript" src="/packages/c5dk_twentytwenty_image/js/jquery.twentytwenty.js"></script>
 

Re: Re: C5DK TwentyTwenty Imageの不具合について

2019年11月14日 at 18:56
registerViewAssetsは、38行目くらいに存在していると思いますけど、その中に

$this->requireAsset('javascript', 'c5dktwentytwenty');

を追加しているのか新たに一番下の行とかに丸々

public function registerViewAssets($outputContent = '') {
$this->requireAsset('javascript', 'c5dktwentytwenty');
}

を追加していますか?
Cannot redeclareなんで、registerViewAssetsを再宣言しているみたいなんですけど。
 

Re: C5DK TwentyTwenty Imageの不具合について

2019年11月15日 at 10:08
ありがとうございます。

38行目のregisterViewAssetsその中に
$this->requireAsset('javascript', 'c5dktwentytwenty');
を追加しても症状は変わらず、

下記を別途、丸々追記すると
public function registerViewAssets($outputContent = '') {
$this->requireAsset('javascript', 'c5dktwentytwenty');
}

下記のエラーが表示されます。
Cannot redeclare Concrete\Package\C5dkTwentytwentyImage\Block\C5dkTwentytwentyImage\Controller::registerViewAssets()