2013年02月

マークアップエンジニアとかWEBディレクターとかをやってる僕が、自分が詰まって、解決したことをここに残しておきますよ。

人気ソーシャルボタン(facebookいいね・tweetボタン・はてぶ・googleプラス)を1ソースで設置する

備忘録的なこのブログでも、ソーシャルボタンを貼っつけました。

今の日本で人気どころの以下4つ
ーーーーーーーーーーーーーーーーーーーーーーーー
・facebookいいねボタン
・tweetボタン
・はてぶボタン
・googleプラスボタン 
ーーーーーーーーーーーーーーーーーーーーーーーー

それぞれのボタン作成のリンク先はこちら

■facebookいいねボタンを作成
facebook developer  

■tweetボタンを作成
Twitter ツイートボタン作成 

■はてぶボタン
はてばブックマークボタンの作成・設置について

■googleプラスボタン
+1button



facebookボタンとはてぶボタンを賢くするために

各作成ページで、そのままスクリプトを作って、ブログなり、サイトなりに貼れば、機能するんですが、運用上ちょっと困った問題もあります。

それは、facebookボタンとはてぶボタンが賢くないってこと。


twitterボタンと+1ボタンは、そのページのURLとタイトルを自動的に引っ張ってきてくれるので、いちどスクリプトを作ったら、どのページに貼っつけるにしても、おなじスクリプトを貼ればいいです。


でも、facebookとはてぶボタンは、スクリプトごとにページURLとタイトルを書き換えなきゃいけない。

例えば、ブログの1ページをかいて、そこにボタンを設置した場合、そのページのURLでスクリプトを作って貼り付けることになりますが、ブログの2ページ目を書いて、そこにボタンを設置したい場合は、また新しく生成されるURLでボタンを作成しないといけない。

これは面倒っすね。


そこで、javascriptで、facebookとはてぶに関しては自動的にURLとタイトルをもってきちゃう仕組みを作ります。

そうすると、4つのボタンすべてで、どのページに貼り付けても、”そのページ”のソーシャルリンクになってくれます。

具体的には以下

<div class="btn_social">
<ul>
<li class="twitter"><a href="https://twitter.com/share" class="twitter-share-button twitter-count-vertical" data-lang="ja" data-count="vertical">ツイート</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 class="hatena">
<script type="text/javascript" language="javascript">
document.write("<a href=\""+document.URL+"\" class=\"hatena-bookmark-button\" data-hatena-bookmark-title=\""+document.title+"\" data-hatena-bookmark-layout=\"vertical-balloon\" title=\"このエントリーをはてなブックマークに追加\"><img src=\"http://b.st-hatena.com/images/entry-button/button-only.gif\" alt=\"このエントリーをはてなブックマークに追加\" width=\"20\" height=\"20\" style=\"border: none;\" /></a>");</script>
<script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async">
</script>
</li>
<li class="facebook">
<script type="text/javascript" language="javascript">
document.write("<iframe src=\"//www.facebook.com/plugins/like.php?href=http%3A%2F%2F"+document.URL+"&amp;send=false&amp;layout=box_count&amp;width=80&amp;show_faces=false&amp;font&amp;colorscheme=light&amp;action=like&amp;height=90&amp;appId=283685701733129\" scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:80px; height:90px;\" allowTransparency=\"true\"></iframe>");
</script>
</li>
<li class="googleplus">
<div class="g-plusone" data-size="tall"></div>
<!-- Place this tag after the last +1 button tag. -->
<script type="text/javascript">
window.___gcfg = {lang: 'ja'};
(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>
</ul>
</div>

このブログで使ってるものです。

長くてぎょっとしたかもですが、このブログと同じ形、ボックス型のソーシャルボタンを作りたいときは、まるまるコピペで大丈夫だと思います。


(※だめだったら指摘してください・・)


twitterとgoogleplusは作成したまんま貼っています。


はてなの部分だけ抜粋

<li class="hatena">
<script type="text/javascript" language="javascript">
document.write("<a href=\""+document.URL+"\" class=\"hatena-bookmark-button\" data-hatena-bookmark-title=\""+document.title+"\" data-hatena-bookmark-layout=\"vertical-balloon\" title=\"このエントリーをはてなブックマークに追加\"><img src=\"http://b.st-hatena.com/images/entry-button/button-only.gif\" alt=\"このエントリーをはてなブックマークに追加\" width=\"20\" height=\"20\" style=\"border: none;\" /></a>");</script>
<script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async">
</script>
</li>

 長いので、ウエーってなりますが、よーくみると、

document.write();

を使って、htmlを書き出しているだけです。


はてぶのボタンを作成したときのaタグの部分
<a href="http://b.hatena.ne.jp/entry/●●URL●●" class="hatena-bookmark-button" data-hatena-bookmark-title="タイトル" data-hatena-bookmark-layout="vertical-balloon" title="このエントリーをはてなブックマークに追加">〜
の●●URL●●とタイトルの部分を、document.URLとdocument.titleに置き換えてるだけですね。


document.URL → javascriptでいまいるページのURLを出す命令

document.title → javascriptでいまいるページのタイトルを出す命令



置き換えるとこうなります。

document.write("<a href=\""+document.URL+"\" class=\"hatena-bookmark-button\" data-hatena-bookmark-title=\""+document.title+"\" data-hatena-bookmark-layout=\"vertical-balloon\" title=\"このエントリーをはてなブックマークに追加\">〜);
 
いちいち出てくる「\」は、エスケープのための文字で、「"」とかをjavascript内で文字列として使いたいときは前に 「\」を付けます。「¥」でもOKなはず。


facebookも同じようなやりかたでOKです。


 

ベーシック認証をかけたいけど.htpasswdを指定するサーバーのフルパスがわかんないよ!ってときに便利なcgi

サイトを制作中のときに、お客さんに見せる時って、ベーシック認証をかけますよね。

.htaccess
.htpasswd

の2つのファイルを作って、サーバーにアップします。 

僕は以下みたいなテンプレを用意してます。

■htaccess.txt
AuthUserFile "/home/ホニャララ/.htpasswd"
AuthName "Member Site"
AuthType BASIC
require valid-user

■htpasswd.txt
id:password 


パスワードを作るのはこちらが便利
http://www.chama.ne.jp/access/

んで、2つのtxtファイルをサーバーのpublic_html/直下にアップして、ftpソフトでファイル名変更で、
.htaccess と .htpasswdにするわけなんですが、

問題は赤字のホニャララの部分がわかんないパターン。

お客さんからサーバーにログインするためのIDパスをもらってれば代わりに管理ページに入って調べたりできますけど、お客さんの方でも「よくわからない」とか言われちゃうこともあったり。

そういうときは、FTP情報だけしかもらってなくても、フルパス(ホニャララの部分)を調べる方法があります。

方法っていうか、cgiを設置します。

cgiはkent-webさんのとかおすすめです。
http://www.kent-web.com/utility/index.html


このfullpath.cgiをサーバーにアップして、
http://ドメイン.com/fullpath.cgi

にアクセスしてみる。

すると、フルパスを教えてくれます。

もし500エラーがでたら、パーミッションが間違えてる可能性があるので、
755とか705とかにしてみてください。

(それでもダメなら、サーバー会社のマニュアルのcgi設置のコーナーを見に行くしかないか)



フルパスがわかったら、.htaccessの該当部分を書き換えて保存して、
サーバーアップ、.htaccessに名前を変える。


 あとは、ブラウザでページにいってみて、指定したIDとパスワードで入れることを確認して完了!

 

HTML5アプリに移行するときに使うライブラリとフレームワーク

現在は、iOSもAndroidアプリも、ネイティブで開発が主流です。

しかし、今後数年で、HTML5アプリに置き換わっていくという予測もあります。

じゃぁ、現状はどうするべきかっていうと、ブームになっているのは
ハイブリッドアプリと言われる、ネイティブではブラウザと最低限のデバイス機能だけ用意して、実際の動きはWEB側で行っちゃうっていうアプリ。
(ガワアプリ) 

いずれHTML5になっていくとしても、現在は流通上、AppstoreやGoogle playを経由して配布しないわけにもいかないから、

中味はHTML5でできていて、外側だけネイティブアプリになっている、ハイブリッドアプリで提供するわけですね。



HTML5で作って、簡単にネイティブアプリに変換できるフレームワークの2強が

Phonegap と Titanium mobile

今後のスキルアップ計画としては、こういうものを使いながら、HTML5の力を磨いて、いつか来る、HTML5アプリ時代に活躍できるようにしておくっていうのがいいのかも。


ちなみに、phonegapでもTitanium mobileでも、UIや動きのスピードなどでネイティブに負けてしまうことが多いため、UI部分として、以下の2つが使われることが多いようです。

jQuery mobile

sencha Touch


( ことごとく英語・・)


この4つを覚えてオープンプラットフォーム時代にむけて
スキルアップっすね! 

スマホサイトを作るときに、エリアから文字がはみ出したときに自動で省略してくれるcssプロパティtext-overflowが便利

iphoneの画面は小さいです。

縦でブラウザを見てる人にとっては、横幅320pxしかないです。

そんな中で、ページタイトルをテキストで表示しようとすると、十数文字書いただけで2行になっちゃったりしますが、 タイトルまわりは、とくに改行させたくない場合があります。

そんな時に便利なのが、

text-overflow:ellipsis;

というプロパティ


要素を越えるくらい長いテキストが出てくると3点リーダ(…)を使って、途中で切ってくれるすぐれもの。


実際にはwhite-spaceなどと組み合わせて以下のように使います。


.boxtitle{
width:200px;
overflow-hidden;
white-space:nowlap;
text-overflow:ellipsis;

PCでは使うことは少ないかもです。

あ、でも動的なサイト、SNSみたいなやつを作るときには便利かもしれないですね。

iphoneサイトを作ったら画像がぼやけるのはretinaディスプレイのせい

iphoneサイトのコーディングを依頼されてデザイン渡されたときに、
そのままスライスしてコーディングしたら、
なんか画像がぼやけてるーーー

みたいなことありませんか?

iphoneは320×480の画面サイズで、そのサイズのデザインを入れているのになぜ!?


これ、実はretinaディスプレイのせいです。

iphone4以降では、Retina displayという高解像度のディスプレイが採用されていて、320×480pxサイズの画面の中に、実は2倍の640×960px分が詰込まれてます。

なので、ぼやけさせずに、キレイな画像をみせたいときは、単純に2倍のサイズの画像を用意します。


ただ、ちょっと面倒ですが、2倍のサイズの画像をそのまま置くと、でかい画像になっちゃうので、2倍の画像を用意した上で、当初のサイズまでcssやimgのwidthプロパティで縮める必要があります。

めんどうっすね。

とりあえず覚えておきたいのは、スマホのコーディングを頼まれたら、2倍のサイズでデザイン下さいって言っておくことです。


記事検索


手ぶらで通話 - bluetoothヘッドセット

1時間1円で暖かい。電気毛布。

夏のPC仕事のおともに冷えピタ。クールヘッドで脳のスピードがあがります。

お仕事のご依頼・お問い合わせはこちら

コーディングのお仕事が得意です。

info(あっと)tacshock.com
タグクラウド
QRコード
QRコード
  • ライブドアブログ