CMS「すぐ使えるCGI」の開発者がご質問にお答えします

 

続々・統合の JavaScriptについて (試用中にSSI/PHP で組込みの場合) (No. 1247)

回答日: 2012-10-29

質問

1240、1243で質問させていただいたものです。
ご返答ありがとうございます。

1243の件は、私の方の間違いを確認しました。
こちらの内容は忘れていただければと思います。
(いただいデータを混在させていました。すみません)

で、
1240の件は、まだ解決しておりません。

mergedlistの中に

Aのニュース1
Aのニュース2

Bのニュース1
Bのニュース2


として読み込んだ場合、JavaScriptを追加しない場合は、

Aのニュース1
Aのニュース2
クレジット

Bのニュース1
Bのニュース2
クレジット

と表示されますが、JavaScriptを追加すると、

クレジット

Bのニュース1
Bのニュース2
クレジット

となり、最初のニュースが消えてしまいます。
試しに、3つ目のCのニュースを入れてみても、やはり1番上のニュースだけは
消えてしまい、クレジットだけが残ります。

何かわかりますでしょうか。

こちらの箇所がなかにか解決せずで購入に進めないでいます。
お忙しいところ恐縮ですが、よろしくお願いします。
投稿日時: 2012-10-28 16:39

回答

お世話になっております。
解決にお時間が掛かり申し訳ありません。

■元のご質問
http://sugutsukaeru.jp/bbs/1240/


さて問題についてですが、こちらでも同様の環境を作ってテストした所、同じ現象が確認できました。
先日は試用中の表示と問題は無関係とご回答致しましたが、この点は認識不足でした。申し訳ございません。

■対応方法

ライセンスキーを登録して試用中の表示がなくなれば現在のテンプレートのままで期待通り動作しますが、試用中に統合の確認をされる場合は、以下の変更を行って下さい。

○対象ファイル: 組み込み先ページ(トップページの index.html など)

○変更箇所(変更前)

</body>の直前に追加したコードのうち、下記の1行を変更して下さい。

================================
<!-- body タグの終了直前に追加 ここから -->
<script type="text/javascript"><!--

var ListPart = document.getElementById('mergedlist');
var ListIds = new Array();
for (var i=0; i<ListPart.childNodes.length; i++){
    var LItem = ListPart.childNodes.item(i);
    if (LItem.nodeType==1){     <!-- この行を変更 -->
        ListIds.push(LItem.id);
    }
}
================================

○変更後
上記で「<!-- この行を変更 -->」とある行を、以下の1行で置き換えて下さい。
================================
    if (LItem.nodeType==1 && LItem.id && LItem.id.indexOf("news",0)==0){
================================


○確認
変更が終わりましたら、サーバに上書きアップロードの後、再読み込みしてごご確認下さい。


◆いただいた内容からの変更点
タイトルに詳細情報を追記しました。
回答日: 2012-10-29