title書き換えで悩む

Posted by on 31 1月 2014 | Tagged as: EC-CUBE, EC-CUBEプラグイン"WpPost", WEB, WEBプログラミング, wordpress, プラグイン

EC-CUBEのプラグインWpPostのSEO対策をしていて2回ほど躓いたので、書いておきます。

EC-CUBEのプラグイン作成ではSmartyのテンプレートをフックして、内容を変更できます。

  1. prefilter・・・Smrtyテンプレートコンパイル前※コンパイル時のみ
  2. outputfilter・・・Smrtyテンプレートコンパイル後※テンプレート出力時に毎回

prefilterでtitleタグを変更するために

$objTransform->select(‘title’)->replaceElement(file_get_contents($template_dir . ‘plg_hoge_add.tpl’));

とすると、「テンプレートの操作に失敗しました。title が存在しません」となります。

悩んだのですが、解決しないためEC-CUBEのフォーラムで質問したら、titleではエラーするようです。
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=13941&forum=17&post_id=62557

上記リンクにあるようにjQueryで<title>~</title>の中身を入れ替えるようにしました。

 $('title').text('Smartyのtagとか');

やれやれと思っていたら、ChromeやFireFoxは問題無いのですが、IEでエラーが出ます!

色々悩んだところ、どうも$('title').text('Smartyのtagとか');が影響しているようなので、調べてみると、大正解のページを見つけました。

jQueryでタイトルタグが書き換えられない

なので、

document.title = "Smartyのtagとか";

とすることで、解決!

やっと思い通りの動きをするようになりました。

IE8でjQueryセレクタにHTML5要素を指定すると動かない

Posted by on 29 1月 2014 | Tagged as: WEB, WEBプログラミング, wordpress

忘れがちなので、メモしときます。

WordPressでwp_list_comments()を使うと、コメントリストのHTMLが取得できますが、

‘format’ => ‘html5′

とすると、コメントごとに

<artcle id=”div-comment-XX”>
中身・・・
</article>

というHTMLになります。
http://codex.wordpress.org/Function_Reference/wp_list_comments

 

このid:div-comment-XXに対し、jQueryで

$(“#div-comment-XX”).css(“display”,”none”);

とかすると、<article>がHTML5の要素のため、IE8では動きません。
※IE9未確認

 

解決策1.

‘format’ => ‘xhtml’

として、HTML5のタグは使わない。

 

解決策2.

ブラウザ判定して、IE10未満の場合
<article>~~</article>を<div>~~</div>
に置換する。

 

今回レスポンシブな作業なので、解決策2で対応しました。