だるまブログ > wordpress

wordpress

Archived posts from this Category

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

とすることで、解決!

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

category_description()でちょっと悩んだ

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

30分ほど悩んだので、備忘録として書いておきます。

WordPressで

<?php echo category_description( $category_id ); ?>

でカテゴリの説明が取得できますが、

<p>カテゴリ説明のテキスト</p>

と返ってきます。

<p>~</p>が余計なので、

$var = strip_tags(category_description());

としたのですが、この値をSmartyで利用しようとするとエラーが出ました。

色々調べたら改行が残っていたので、

$var = str_replace(array(“\r\n”,”\r”,”\n”), ”, $var);

と、改行を削除することで解決しました。

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で対応しました。

ブログのRSSをサイドバーで表示Part2

Posted by on 10 1月 2010 | Tagged as: wordpress

KB Advanced RSS Widgetで各記事のリンクを別のウィンドウで開くようにしましたが、このままでは

  • ブログタイトルのリンクは同じタイトルで開いてしまう。
  • ブログタイトル前のアイコンからはフィードの内容が開いてしまう。

という問題がありますので、KB Advanced RSS Widgetを改造します。

KB Advanced RSS Widgetは
wp-content/plugins/kb-advanced-rss-widget/index.php
でWordPressのバージョンにより使われるファイルが違います。
今回、WordPressはver.2.9.1を使用しましたので、
wp-content/plugins/kb-advanced-rss-widget/versions/wp-2-8.php
を変更します。

この、435行目で「ブログタイトルのリンク」が生成されていますので、

$this->title = '<a href="'. $this->link .'">'. $this->title .'</a>';

$this->title = '<a href="'. $this->link .'"  target="_blank">'. $this->title .'</a>';

と修正します。

また、439行目でアイコン部分が生成されていますので、

$this->title = '<a class="kbrsswidget" href="'.$this->url.'" title="Syndicate this content"><img width="14" height="14" src="'.$this->icon.'" alt="RSS" style="background:orange;color:white;" /></a> '.$this->title;

$this->title = '<img width="14" height="14" src="'.$this->icon.'" alt="RSS" style="background:orange;color:white;" /> '.$this->title;

と修正しました。

これで、

  • ブログタイトルのリンクが別ウィンドウで開く。
  • ブログタイトル前のアイコンはリンクなし。

となりました。

ブログのRSSをサイドバーで表示Part1

Posted by on 09 1月 2010 | Tagged as: wordpress

CMSとしてWordpressを使ったサイトを構築しています。

そこで、色々なブログのRSSをサイドバーで表示する必要があり、KB Advanced RSS Widgetというプラグインを導入&改造しました。
なかなか日本語の情報もなかったので、メモします。

導入はダッシュボードのプラグイン>新規追加からKB Advanced RSS Widgetを検索してサクッと入れてしまいました。

有効化すると、外観>ウィジェットにKB Advanced RSS Widgetが出てくるので、これをサイドバーにドラッグ&ドロップして設定します。

私が行った設定は

Title  適当なブログタイトル名
RSS feed URL  該当ブログのRSSを取得するURL
RSS icon URL  ブログタイトル名の前にアイコンがつきます。デフォルトのままでアイコンがつくので変更してませんが、適当に変更可能です。
Number of items to display   表示する記事の数
Link title to feed URL?  チェックを入れるとブログタイトル名にブログへのリンクがつきます。
Hide widget when feed is down?  フィードが取れなかったら、表示しないってことでしょう。チェック入れときました。

で、設定のポイントは

<li><a class=’kbrsswidget’ href=’^link$’ title=’^description$’>^title$</a></li>

の部分で、http://wordpress.org/extend/plugins/kb-advanced-rss-widget/other_notes/
に説明があります。

^link$、description$、^title$とか言うのはRSSの中で使われているタイトル(変数名?)です。
これにオプションをつけることで、表示内容をコントロールできます。

RSSでタイトル(変数名?)がどのように使われているかを見るには、ブラウザのリンクに

http://フィードを表示させるWPブログのURL/?kbrss=該当ブログのRSSを取得するURL

と入力することで該当ブログのRSSの中身が確認できます。
この時、フィードを表示させるWPブログには「管理者」でログインしている必要があるようです。

ちなみに、私の場合、エキサイトブログのRSSとMovableTypeのブログのATOMをテストで使ったところ、

■エキサイトブログのRSSのフィードの中身

[title] => 記事タイトル
[link] => 記事URL
[guid] => 記事URL
[description] =>記事内容

■MovableType ATOMのフィードの中身

[title] => 記事タイトル
[link] => 記事のリンク
[id] =>
[published] => 記事発効日時
[updated] => 記事修正日時
[summary] => サマリー
[author] =>
[author_name] => 記事発行者名
[atom_content] => 記事内容

となってましたので、

■エキサイトブログのRSS用の設定

<li class=’kbrsswidget’>^pubdate[opts:date=Y/m/d]$<br /><a href=’^link$’ title=’^description$’ target=”_blank”>^title$</a><br />^description[opts:trim=40]$</li>

■MovableType ATOM用の設定

<li class=’kbrsswidget’>^updated[opts:date=Y/m/d]$<br /><a href=’^link$’ title=’^summary$’ target=”_blank”>^title$<br />^summary[opts:trim=40]$</a></li>

としました。

エキサイトブログの方だけ説明すると
^pubdate[opts:date=Y/m/d]$
記事の発効日を2010/01/09の形式とする

<a href=’^link$’ title=’^description$’ target=”_blank”>
同じ画面で開かないようtarget=”_blank”を入れました。

^description[opts:trim=40]$
ブログの内容を頭から40character分表示

となります。

これで、

ブログタイトル
記事日時
記事タイトル
記事内容サマリ
記事日時
記事タイトル
記事内容サマリ
記事日時
記事タイトル
記事内容サマリ

とサイドバーに表示されるようになりました。

KB Advanced RSS Widgetの場合一つのウィジェットっで1つのフィードURLしか設定できませんので、複数のフィードを表示させるにはウィジェットを複数分設定する必要があります。