前回の続き。詳細ページにtwitterやfacebookなどのソーシャルボタンを設置した。以前WordPressで設置したのを参考にした。
成果物:index.html->item.php (ソーシャルボタンを設置)
メモ
- はてなブックマークは現在ページのURLを設定する必要がある。その他3つは現在ページのURLがデフォルト設定(だと思う)
- JavaScriptで文字列を代入する際、改行の所にバックスラッシュを入れる必要がある
- JavaScriptはlocation.hrefで現在のページのURLを取得できる
ソースコード
socialbutton.js
// ソーシャルボタン
function get_social_buttons(url) {
title = "スマホキャプチャーギャラリー";
var html = '\
<ul class="social_buttons">\
<li>\
<!-- はてなブックマーク -->\
<a href="http://b.hatena.ne.jp/entry/'+url+'" class="hatena-bookmark-button" data-hatena-bookmark-title='+title+' data-hatena-bookmark-layout="simple" title="このエントリーをはてなブックマークに追加"><img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" /></a><script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script>\
</li>\
<li>\
<!-- twitter -->\
<a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-lang="en">Tweet</a>\
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>\
</li>\
<li>\
<!-- google+ -->\
<div class="g-plusone" data-size="medium" data-annotation="none"></div>\
<script type="text/javascript">\
(function() {\
var po = document.createElement("script"); po.type = "text/javascript"; po.async = true;\
po.src = "https://apis.google.com/js/plusone.js";\
var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(po, s);\
})();\
</script>\
</li>\
<li>\
<!-- facebook -->\
<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/en_US/all.js#xfbml=1";\
fjs.parentNode.insertBefore(js, fjs);\
}(document, "script", "facebook-jssdk"));</script>\
<div class="fb-like" data-send="false" data-layout="button_count" data-width="450" data-show-faces="false"></div>\
</li>\
</ul>\
';
return html;
}
socialbutton.css
ul.social_buttons {
margin: 0;
}
ul.social_buttons:after {
clear: both;
content: " ";
display: block;
font-size: 0;
height: 0;
visibility: hidden;
}
.social_buttons li {
float: left;
list-style: none;
padding-right: 10px;
}
item.php
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="socialbutton.css" />
<title>スマホキャプチャーギャラリー</title>
</head>
<body>
<a href="index.html">Home</a> | <a href="upload.html">アップロード</a> | <a href="ranking.html">人気順</a> | <a href="latest.html">新着順</a>
<?php
require_once('config.php');
require_once('function.php');
$dbh = connect_db();
$id = $_GET['id'];
// アクセスカウンタをインクリメント
$sql = sprintf("update mobile_capture_showcase set counter=counter+1 where id=%d", $id);
$dbh->query($sql);
// 該当IDの画像情報を表示
$sql = sprintf("select * from mobile_capture_showcase where id=%d", $id);
foreach ($dbh->query($sql) as $item) {
$path = "./images/" . $item['filename'];
echo sprintf(
'<table>
<tr>
<td>
<img src="%s" alt="image" width="320" />
</td>
<td>
<table>
<tr>
<td>名前:%s</td>
</tr>
<tr>
<td>投稿時刻:%s</td>
</tr>
<tr>
<td>OS:%s</td>
</tr>
<tr>
<td>アクセス数:%s</td>
</tr>
<tr>
<td>コメント:%s</td>
</tr>
<tr>
<td><form action="edit.php" action="get">
<input type="hidden" name="id" value=%d />
<input type="text" name="updelkey" id="updelkey" size="20" placeholder="編集・削除キー(4桁数字)" /><input type="submit" value="編集" /><input type="button" id="btn_delete" data-id="%d" value="削除" />
</form></td>
</tr>
<tr>
<td><span id="btn_social"></span></td>
</tr>
</table>
</td>
</tr>
</table>',
$path,
$item['name'], $item['time'], $item['os'], $item['counter'],
h($item['comment']),
$id,
$id);
}
$dbh = null;
?>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="function.js" type="text/javascript"></script>
<script src="socialbutton.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// 削除ボタン
$('#btn_delete').click(function() {
if (confirm("削除しますか?")) {
$.post('./delete.php',
{
id: $(this).data('id'),
updelkey: $('#updelkey').val()
},
function(data) {
if (data.result == 'success') {
// index.htmlにジャンプ
location.href = "./index.html";
}
else {
alert(data.message);
}
},
'json'
);
}
});
// ソーシャルボタン
$('#btn_social').append(get_social_buttons(location.href));
});
</script>
</body>
</html>
参考サイト
- はてなブックマークボタンの作成・設置について
- Twitter / Twitter buttons
- +1 Your Website – Google
- Like Button – Facebook Developers
- jQuery 色々な自分自身の○○を取得する-ITかあさん
パーフェクトJavaScript (PERFECT SERIES 4)
posted with amazlet at 13.02.07
井上 誠一郎 土江 拓郎 浜辺 将太
技術評論社
売り上げランキング: 60,832
技術評論社
売り上げランキング: 60,832
パーフェクトPHP (PERFECT SERIES 3)
posted with amazlet at 13.01.30
小川 雄大 柄沢 聡太郎 橋口 誠
技術評論社
売り上げランキング: 24,082
技術評論社
売り上げランキング: 24,082
関連エントリー

