JSのブログ更新履歴が表示されない不具合
2017/02/01
SSIを使わずJSにて別ブログの新着記事を表示
この記事で公開している
ブログ間、ブログとサイト間などで更新情報を表示する為のJSファイルが
なぜか表示されない不具合が起こっていました。
特にソースも変更していないので、
JS同士の競合かと思ったのですが
どこにも情報がなく、ローカルでテストしても動かないので
なぜだろうと思ったら・・・
記事タイトルに余分なスペースが入っていたため
本来一行で書かなくてはいけない
document.write()が改行されてしまい、
表示されなくなっていたのです。
【参考サイト】
document.write()・・・・・ドキュメントに文字列を書き出す
http://www.htmq.com/js/document_write.shtml
記事のタイトルから余計なスペースを消して保存したら直りました
が、このままでは問題なので
元のソース
document.write('<ol><MTEntries lastn="3"><li>(<$mt:EntryDate format="%y/%b/%d"$>)<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li></MTEntries></ol>');
MTのブログ記事タイトルに余計なスペースが入った場合、
スペースを削除するソースを付け加えます。
修正後のソース
document.write('<ol><MTEntries lastn="3"><li>(<$mt:EntryDate format="%y/%b/%d"$>)<a href="<$MTEntryPermalink$>"><$MTEntryTitle trim="1"$></a></li></MTEntries></ol>');
これでタイトルに空白を入れても除去されて、JSの表示に問題が出ませんでした。
その他の方法としては出力結果から正規表現を使って空白を取る方法があるようですが、
JavaScriptとあまり詳しくなくMTよりなのでこんな方法になりました
JavaScriptの正規表現もおいおいやっていこうと思っています。
機会があれば
【関連リンク】グローバル・モディファイアリファレンス|trim
http://www.movabletype.jp/documentation/appendices/modifiers/trim.html
上記公式サイトのリファレンスでは
<mt:entrybody trim="1" />となっていますが、
<$MTEntryTitle trim="1"$>でも使えます