jQuery Mobile / とりあえずページ作ってみる

あれこれ見つつまずは基本的なところからやってみる。
チュートリアルとしてこちら参考にしつつ。
jQuery Mobile [基礎編]

詳しくはリファレンスを日本語化されているこちらで。
jQuery Mobile リファレンス

あとは、こちらにリンク集がよくまとまってます。
jQuery Mobile が必須スキルになる!と思うのでこれから勉強する際に参考になる記事まとめ | バシャログ。

jQuery Mobileって名前がついてるけど、どちらかと言うとHTMLの記述メインかな。まだ深くはさわってないけど。

まずは、その前にHTML5で基本的なところを。
あと jQuery や jQuery Mobile を読み込みます。
※ 下記は jQuery のCDN使ってます

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title>jQuery Mobile</title>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.css" />
        <script src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.js"></script>
    </head>
    <body>
        <!-- ここになんか書きます -->
    </body>
</html>

jQuery Mobie では、スマホでよく使う機能がテンプレの様にまとめられてます。
ヘッダ、フッタ、メインのコンテンツ部分などは以下の感じ。
※<body> タグ内に書きます。

1
2
3
4
5
6
7
8
9
10
11
<div data-role="page">
    <div data-role="header">
        <h1>ヘッダ</h1>
    </div>
    <div data-role="content">
        コンテンツ
    </div>
    <div data-role="footer">
        フッタ
    </div>
</div>

基本は<div>タグで data-role を指定するだけです。
<div class=”header”>みたいなマークアップとおんなじよね。
また、一画面は <div data-role=”page”> でくくる必要があります。
※ひとつのファイルに複数画面書けるので

これだけでもそれっぽいデザインになりますが、ボタンを追加してみます。
今回はボタン風のリンクを使用して、ダイアログを開きます。

1
<a href="dialog.html" data-role="button" data-rel="dialog" data-transition="pop">OPEN</a>

data-role=”button” でボタンのようなスタイルを指定、data-rel=”dialog” でJavaScript の alert 的なダイアログになります。data-transition=”pop” でアニメーションの指定をポップアップにします。
※アニメーションは他にも slide などイロイロ指定できます

ダイアログも同様に別ファイルで用意してみます。
※同一のファイルに設定することも出来ます

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title> Dialog | jQuery Mobile</title>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.css" />
        <script src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.js"></script>
    </head>
    <body>
        <div data-role="page" id="dialog">
            <div data-role="header">
                <h1>Dialog</h1>
            </div>
            <div data-role="content">
                <p>Dialog</p>
                <a href="index.html" data-role="button" data-rel="back">Back</a>
            </div>
        </div>
    </body>
</html>

data-rel=”back” を指定して、戻るボタンもつくっときます。

だいたいこんな感じで、基本的なページは作れます。普通のページなら、指定されたタグを書いてくだけ。

サンプル (ダイアログは別ファイル)
※スマホで見るか、Chrome or Safari で見て下さい

デモ (一ファイルに複数ページで記述)

Google Analytics Mobile 設定してみる

ガラケーでGoogleAnalytics設置の必要が出てきたので試してみる。
まずは普通にGoogleAnalyticsでプロファイルを作成する。んで、コードを生成するときに「Advanced」から「A site built for a mobile phone」を選択。

開発言語を選ぶと、画面右にコードが出てくるのでコピペして貼り付けます。自分の場合はPHPのコードを生成して、すべてのページから読まれている common.php に貼りつけました。WordPressのサイトなら header.php とかのテンプレかな。

もうひとつのコードはなるべく画面下の方に置くようにってことなので、こっちはテンプレの </body> タグの直前に貼り付けました。この辺はPCサイトに js 貼るのと同じくコンテンツの表示優先って事なんかね。

あとは ga.php をダウンロードして、指定のサイトのトップにアップしとけばOKかな。これでしばらく計測してみる。

よくあるWordPress / 更新情報のヘッドライン表示

WordPressでトップページにお知らせなどヘッドライン表示したい場合のやりくり。

1. まずは自分自身の更新情報取ってくるとき

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$feed = new WP_Query(array(
    'cat' => 1,
    'posts_per_page' => 5
));
?>
<div class="feed">
<?php if ($feed->have_posts()): // データあったら表示 ?>
    <ul>
    <?php while($feed->have_posts()): ?>
        <?php $feed->the_post(); ?>
        <li>
            <a href="<?php the_permalink() ?>">
                <span class="date"><?php the_time('Y.m.d'); ?></span>
                <span class="title"><?php echo mb_strimwidth(the_title('', '', false), 0, 60, '…'); ?></span>
            </a>
        </li>
    <?php endwhile; ?>
    </ul>
<?php else: ?>
    <!-- データないよ -->
<?php endif; ?>
</div>

WP_Queryで特定のカテゴリ(‘cat’ => 1)から5件だけ(‘posts_per_page’ => 5)取ってくる場合。
他にもイロイロ指定できます。
テンプレートタグ/query posts – WordPress Codex 日本語版

タイトルのとこは長いのを省略してるけど、そんなの気にしない場合は下記でも。

1
<?php the_title('<span class="title">', '</span>'); ?>

あとは the_time() のトコは the_date() 使うと、同じ日付が続いたときに省略されてあわてがちなので注意。

2. Feedから更新情報とってくるとき
どこぞのRSSやら取ってきて表示したいときもあるよね。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
include_once ABSPATH . WPINC . '/feed.php';
// Feed取得
$feed = fetch_feed('http://example.com/feed/atom/');
if (is_wp_error($feed)) {
    $maxitems = 0;
} else {
    $maxitems = $feed->get_item_quantity(5);
    $items = $feed->get_items(0, $maxitems);
}
?>
<div class="feed">
<? if ($maxitems): // データあったら表示 ?>
    <ul>
    <? foreach ($items as $item): ?>
        <li>
            <a href="<?php echo $item->get_permalink(); ?>">
                <span class="date"><?php echo $item->get_date('Y.m.d'); ?></span>
                <span class="title"><?php echo mb_strimwidth($item->get_title(), 0, 60, '…'); ?></span>
            </a>
        </li>
    <? endforeach: ?>
    </ul>
<? else: ?>
    <!-- データないよ -->
<? endif; ?>
</div>

最初に表示する件数のやりくりあるけど、だいたい流れはおなじ。
あとは feed.php のインクルード忘れないように。fetch_rss は非推奨っぽいので、fetch_feed 使いました。