その他

Tweetするような内容をどう管理していくかについて

Twitterの発言をWordPress内で表示するプラグインというのがありまして、

@ おい! 今日からお前は!!富士山 だ!! 一度は失敗しても良い。でも同じ失敗を繰り返さない!!

こんな風に表示することが出来る。

これは
http://wordpress.org/extend/plugins/twitter-blackbird-pie/
よりプラグインをダウンロードしてWordPressインストールディレクトリのwp-contents/pluginsに入れ、管理画面の[プラグイン][インストール済みプラグイン]より有効化することで動作する。

使う時は、

[blackbirdpie url="ここに個別の発言のURLを入れる"]

という具合([]はブログに載せるために全角大文字にしているので使用する際は注意)。

ただし、これは、あくまでデータがTwitter上にあるので、メリットとしては、ツイートした人のアイコンや背景画像などをそのまま使えるというのがある。また改変してないよという意思表示にもなる。

ただ、最近思うのは、TwitterやFacebookを一次コンテンツ置き場にしておくのはどうだろう? と言う点だ。Tweetとはいえ、自分で生み出したマイクロコンテンツである。

もしTwitterやFacebookが急につぶれたら? 方針転換をしたら?

そう考えると、個人的にはマイクロコンテンツマネージメントシステム(MCMS)と呼ぶべきようなものがあるといいと感じる。

マイクロコンテンツマネージメントシステムといっても新しいシステムをつくってWordPressとかと併用するようなものではなく、WordPressのプラグインで動作するようなものがいい。

実際WordPressにはTwitterやFaceBookに投稿するようなプラグインがあるので、そちらを利用するのもいいだろう。

要するに、コンテンツの1次管理は自分のところで行い、それをどこ(TwitterやFacebook)にどう出すか(Blogの要約を配信だったり、つぶやきだったり)というのを大事にしていくと、10年後とかに「いろいろ書いた覚えがあるけど何も残ってないや」ってならないで済むのかもしれない。

プラグインつくろうかなあ。

Read More

CakePHPのPagesってなにやってるんだっけ?

さて、前回、Play FrameworkでもCakePHPのPagesのような機能をつくってみようという話を書いたが、あの状態ではまだPagesの機能を実現できているとは言えない。

ということで、そもそもPagesはどんな機能を持っているかソースコードを覗いてみよう。よく使っているだろうけど意外と中身を見た事ないシリーズ。

これが、Pagesのソースコード。

Pages:/controllers/pages_controller.php

class PagesController extends AppController {

/**
 * Controller name
 *
 * @var string
 * @access public
 */

    var $name = 'Pages';

/**
 * Default helper
 *
 * @var array
 * @access public
 */

    var $helpers = array('Html');

/**
 * This controller does not use a model
 *
 * @var array
 * @access public
 */

    var $uses = array();

/**
 * Displays a view
 *
 * @param mixed What page to display
 * @access public
 */

    function display() {
        $path = func_get_args();

        $count = count($path);
        if (!$count) {
            $this->redirect('/');
        }
        $page = $subpage = $title_for_layout = null;

        if (!empty($path[0])) {
            $page = $path[0];
        }
        if (!empty($path[1])) {
            $subpage = $path[1];
        }
        if (!empty($path[$count - 1])) {
            $title_for_layout = Inflector::humanize($path[$count - 1]);
        }
        $this->set(compact('page', 'subpage', 'title_for_layout'));
        $this->render(implode('/', $path));
    }
}

さて、ポイントをみてみよう。

ポイントその1:/controllers/pages_controller.php:line 49

/**
 * This controller does not use a model
 *
 * @var array
 * @access public
 */

    var $uses = array();

ここは、CakePHP使い(通称Baker)たちが、モデルがないコントローラーをつくるときに使う手法で、空の配列を渡す。つまり、Pagesにはモデルがないということ。

ポイントその2:/controllers/pages_controller.php:line 64

        $path = func_get_args();

ここからdisplayアクション内の話。pagesでは、ルーティングにより、「/pages/ページ名」でアクセスできるようになっているが、実際は「/pages/display/ページ名」というURLになっているのだ。func_get_argsという関数は、PHPの関数を可変長の引数にすることが出来るというもの。func_get_argsがないと、displayアクションの引数をあらかじめ決めておかないといけなくなる。

Pagesは、与えられた引数に応じた階層のビューを返す仕組みになっていて、これが柔軟な構造のページを生み出すことを可能にしている。つまり、「/pages/company/about」というURLでは、「/views/pages/company/about.ctp」にあるctpファイルを呼び出すことになる。ディレクトリ構造をそのままにページをつくっていくことができるというわけ。

ポイントその3:/controllers/pages_controller.php:line 66

        $count = count($path);
        if (!$count) {
            $this->redirect('/');
        }

ここでは、引数の数を取得して、引数がない場合は、トップページを表示という実装

ポイントその4:/controllers/pages_controller.php:line 72

        if (!empty($path[0])) {
            $page = $path[0];
        }
        if (!empty($path[1])) {
            $subpage = $path[1];
        }
        if (!empty($path[$count - 1])) {
            $title_for_layout = Inflector::humanize($path[$count - 1]);
        }
        $this->set(compact('page', 'subpage', 'title_for_layout'));

第1引数と第2引数のみ、特定の変数に入れて、一番最後の引数はページ名ということでページのタイトルにしている。つまり、第3階層あるページは$subsubpageという変数に入ったりはしない。これはパン屑用だろうか? ちょっと不思議な実装である。

ポイントその5:/controllers/pages_controller.php:line 82

        $this->render(implode('/', $path));

ここで、$pathに入っている引数を配列にして、ビューを表示するという仕組みをとっている。

以上で、Pagesの機能は終わり。

ではまた。

Read More

WordPressでコードハイライター(syntax highlighting)を使う

このサイトはGreative Labという名前になっていていろいろなアイデアレベルのものを書いていくという方針で始めているのだが、Web構築全般を扱っていくためどこかでコードを記述するというケースが出てくる。確か前にやっていた会社のブログではSyntax HighlighterというWordpressのプラグインを使っていた気がするが、あのプラグインの表示スタイルは、少々レガシーな感じがするというか、もうちょっと今どき風なシンタックスハイライトがないかなあと思っていたのである。

何かいいものはないかと探していたところCodeColorerというのを発見。

CodeColorerのサイト

CodeColorer
http://wordpress.org/extend/plugins/codecolorer/

例えば、こんな表示ができる

いろいろな色のテーマがある

CodeColorer Examples
http://kpumuk.info/projects/wordpress-plugins/codecolorer/examples/

インストール方法はこちら

CodeColorer
http://kpumuk.info/projects/wordpress-plugins/codecolorer/

一言でいうと、ダウンロードしたCodeColorerのファイルをWordpressの
wp-content/plugins/codecolorer
に配置するのみ。

コードハイライトのテーマは管理画面より選択が可能。

プルダウンでテーマを選ぶ

プレビュー表示もできちゃうのが素晴らしい。

ダルトーンな感じがたまらない

お気に入りはダルトーンな感じのTwilightというテーマ。

ということで、このブログでも実際使ってみる。

<?php
    /**
    * PHPのコメント
    */

    phpinfo();
?>

よい感じ!

Read More