WordPressに続いてXoops D3Blogにもfacebook「いいね」ボタンをつけてみた。



「d3blogにfacebookのいいね機能をつけたいと思います。どのようにすればよいでしょうか。」

http://www.xugj.org/modules/QandA/index.php?topic_id=1999

こちらの記事を参考に始め、さらにOGPを付け加えてみた。以下はその記録である。
***********************************************************************
テンプレートファイル「d3blog_inc_entry.html」に赤字部分を挿入
文中「xxxxxxxxxxxxxxx」は書き換えが必要
***********************************************************************
    <p class="readMore"><{$smarty.const._MD_D3BLOG_LANG_CANT_READ_FARTHER}></p>
    <{/if}>
<{/if}>
</div>

<{php}>
$url = $_SERVER["SCRIPT_NAME"];
$url_pattern = '/modules/d3blog/details.php';
if ( preg_match( '{' . $url_pattern . '}' , $url )) {
    // いいねを表示
<{/php}>
<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1&appId=
xxxxxxxxxxxxxxx";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<{capture assign="mypage_url"}><{$smarty.const.XOOPS_MODULE_URL}>/<{$xoops_dirname}>/details.php?bid=<{$entry.bid}><{/capture}>
<fb:like href="/<{$mypage_url|urlencode}>" data-send="true" data-layout="button_count" width="450" show_faces="true"></fb:like>
<{php}>
}
<{/php}>

<ul class="d3blogFooter clearFix">
    <{if !$entry.approved}><li class="unapproved"><{$smarty.const._MD_D3BLOG_LANG_UNAPPROVED}></li><{/if}>
    <{if $bloggers > 1}><li><a href="/<{$mod_url}>/index.php?uid=<{$entry.uid}>" title="<{$smarty.const._MD_D3BLOG_LANG_READ_BLOGGER_ENTRIES|replace:'%s':$entry.blogger.uname}>"><{$smarty.const._MD_D3BLOG_LANG_READ_BLOGGER_ENTRIES|replace:'%s':$entry.blogger.uname}></a></li><{/if}>

***********************************************************************
theme.htmlに赤字部分を挿入
***********************************************************************
<head>
<meta http-equiv="content-type" content="text/html; charset=<{$xoops_charset}>" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-script-type" content="text/javascript" />
<meta http-equiv="content-language" content="<{$xoops_langcode}>" />
<meta name="robots" content="<{$xoops_meta_robots}>" />
<meta name="keywords" content="<{$xoops_meta_keywords}>" />
<meta name="description" content="<{$xoops_meta_description}>" />
<meta name="rating" content="<{$xoops_meta_rating}>" />
<meta name="author" content="<{$xoops_meta_author}>" />
<meta name="copyright" content="<{$xoops_meta_copyright}>" />
<meta name="generator" content="XOOPS" />
<meta property="og:type" content="blog" />
<meta property="og:title" content="<{$entry.title}>" />
<meta property="og:url" content="<{$smarty.const.XOOPS_MODULE_URL}>/<{$xoops_dirname}>/details.php?bid=<{$entry.bid}>" />
<meta property="og:description" content="<{$entry.pingExcerpt|mb_truncate:140:"..."}>" />
<meta property="og:site_name" content="Studio ImageHouse" />
<meta property="fb:app_id" content="xxxxxxxxxxxxxxx" />
<meta property="og:locale" content="ja_JP" />
<{xoops_og_img post_content=$entry.excerpt}>
<link rel="shortcut icon" href="/<{$xoops_url}>/favicon.ico" />
<link rel="stylesheet" type="text/css" media="screen" href="/<{$xoops_url}>/xoops.css" />
<link rel="stylesheet" type="text/css" media="screen" href="/<{$xoops_themecss}>" />

***********************************************************************
OGP中の「og:image:」を取得するのに苦労したが、下記サイトから不要部分を割愛させて使わせてもらうことにした。
ありがとうございました。
http://webgyo.stsuji.com/2010/01/smarty-4.html

***********************************************************************
「XOOPS_PATH/class/smarty/plugins/」に下記を作成、配置する。
function.xoops_og_img.php
***********************************************************************
<?php
function smarty_function_xoops_og_img($params, &$smarty)
{
    $post_content = $params['post_content'];

    $ImgRegPat = "/\<img([^\>]*)src=\"?([\-_\.\!\~\*\'\(\)a-z0-9\;\/\?\:@&=\+\$\,\%\#]+(jpg|jpeg|gif|png|bmp))/i";

    if ($params['post_content']) {

        if (preg_match($ImgRegPat, $post_content, $matches)) {
            $the_image = $matches[2];//get imgurl
        }
    echo "<meta property=\"og:image\" content=\"$the_image\">";
    }
}
?>

***********************************************************************

xoopsの「いいね」キャッシュは下記で簡単に更新されます。
http://developers.facebook.com/tools/debug/

参考サイト
本文中の画像をサムネイル表示するsmartyプラグイン
http://webgyo.stsuji.com/2010/01/smarty-4.html
 

WordPressにfacebook「いいね」ボタンをつけて実験をしていたところ文字化けが発生した。facebook「いいね」のキャッシュのクリアを試みたがうまくいかない。もともとfacebookのデバッガーを使用するようになっていたが、何度やっても同じ繰り返しで、まったく改善されない。もしかすると日本語のエンコーダによるアドレスに不具合があるのかもしれない。不明である。

仕方なく別の方法を思いついたので、同様のお悩みの方は試してみてください。
まずWordPressの管理者でログイン、サイト管理の投稿から編集したい記事に飛ぶ。
タイトル下のパーマリンクの編集ボタンをクリック。
私の場合日本語を使っていますが、
https://www.image-house.co.jp/pension/2011/12/28/朝晩の厳しい寒さと暖かな日差し/

https://www.image-house.co.jp/pension/2011/12/28/朝晩の厳しい寒さと暖かな日差し_/
に変更しOKする。

 これだけでOKです。

結果は下記の通りです。 

 facebook「いいね」のキャッシュがクリアされたら前のアドレスに戻してください。

今流行のfacebook「いいね」ボタンをつけることにした。

最初下記のプラグインを試したが、文字化けが解消しないため、プラグインをアンインストールして直接テーマに書きこむことにした。後で気がついたのだが、文字化けが解消しないのは、facebook側のキャッシュが問題だった。こちらの記事で多分不具合無く、実装が可能だと思う。

{「Facebook Like Button 5.9.5」WPプラグインは、いいねボタン設置とOGP設定の両方を設定してくれる優れもののFacebook用プラグイン}
http://www.taskmother.com/wordpress/699.html

最終的には、プラグインに頼らず、手作りで対処した。

まず、テーマの
header.phpに赤字部分を挿入
xxxxxxxxxxxxxxxxxxxx
zzzzzzzzzzzzzzzzzzzz
は取得したシリアルになります。
***********************************************************************
</title>
<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" /> <!-- leave this for stats -->
<meta property="og:title" content="<?php the_title(); ?>">
<meta property="og:type" content="blog">
<meta property="og:url" content="<?php the_permalink() ?>">
<meta property="og:description" content="<? echo mb_substr(str_replace(array("\r\n","\r","\n"), '', strip_tags($post->post_content)), 0, 70); ?>">
<meta property="og:site_name" content="<?php bloginfo('name'); ?>">
<meta property="fb:app_id" content="xxxxxxxxxxxxxxxxxxxx">
<meta property="og:locale" content="ja_JP">
<?php
$str = $post->post_content;
$searchPattern = '/<img.*?src=(["\'])(.+?)\1.*?>/i';
if ( preg_match( $searchPattern, $str, $imgurl ) ) {
echo '<meta property="og:image" content="'.$imgurl[2].'">';
} else {
echo '<meta property="og:image" content="">';
};
?>


<link rel="stylesheet" href="/<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="/<?php bloginfo('rss2_url'); ?>" />
<link rel="pingback" href="/<?php bloginfo('pingback_url'); ?>" />
***********************************************************************
index.phpに赤字部分を挿入
***********************************************************************
        </div> <!-- close div.entrybody -->

<script type="text/javascript"><!--mce:1--></script>
<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) {return;}
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/ja_JP/all.js#appId=
xxxxxxxxxxxxxxxxxxxx&xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<fb:like href="/<?php the_permalink(); ?>" send="true" layout="button_count" width="300" show_faces="true" font="verdana"></fb:like>

<p style="clear: both"></p>
    </div> <!-- close div.entry -->
***********************************************************************
参考サイト

WordPressでFacebookのいいね!ボタンを不具合無く設置する際のポイント
http://www.yusk.org/memo/wp/facebook_likebutton_ogp.html

Facebook「いいね」設置時に絶対に行うべき1つの施策[Wordpress編]Add Star
http://d.hatena.ne.jp/hajimeataka/20110505/1304582395

WordPressでOpen Graph Protocolを実装したい
http://5509.me/log/wordpress-with-ogp

 

FireFox8にバージョンアップしたら、Google PageRankが正常に表示されない。
アドオン内のLive PageRank 0.9.7を削除、新規にPageRank Client 1.2をインストールで正常に戻った。

Windows7 のシステムの入れ替えをしたらプリンタの設定がリセットされていた。PhotoShopから自然な色合いを出すのが難しい。改めてキャノン・インクジェットプリンタ MP-630 の再設定をしてみた。

まず、付属のCDから、 MP-630 のドライバをインストールする。MP-630 のカラープロファイルが表示されるので、最適なものを選択する。この場合は、末尾 GL2/SG2 を選択した。

 なかなか色が出なかったが、やっと我慢のできる状態になった。