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とか";

とすることで、解決!

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