CakePHPで何かプログラムを組もう。ということで、ブックマークレットシステムを作ろうと思います。
動機ですが、面白い記事をまとめて社内に配信をしようと思い定期的に作業をしているんですが、この行動がだるい。
- Livedoor Readerにログインする
- 登録フィードの中から面白そうな記事を全部別タブで開く
- 1個づつ吟味して、面白そうなサイトの記事タイトルをコピー→メールにペースト
- 続けてURLをペースト
- 中身の概要の載せる場合はさらに中身をコピペしてペースト
- 送信
うーん、短くしたい。ってことで以下の要件を満たすものができれば個人的に作成終了です。
- Livedoor Readerにログインする
- 登録フィードの中から面白そうな記事を全部別タブで開く
- 面白いと思った記事の概要がある場合はその部分を範囲選択(文章を反転)して、ブックマークレットボタンを押す
- CakePHPで作ったプログラムがURLとページタイトル、ブックマークした日時、概要をDBに格納する
- 一通り終わったら成形してリストアップする
- メール送信。(ここも場合によってはシステマチックに)
手順工数変わってない気がする・・・とかは気のせい。個人的に気が楽になります。
結局記事の内容吟味は変わらないし。ってことで、れっつ製作開始!
まず、導入のブックマークレットを押してデータを受け取る部分を作りましょう。
この部分に関しては、すでに昔書いたブックマークレットの記事が使えます。
デジタル料理人:ブックマークレット作成その1(JavaScript)
これを受け取るCakePHP側のプログラムをしないとー。
DBの必要フィールドは以下の通り。
- ID
- URL
- タイトル
- コメント(概要)
- タグ(将来的にタグ付とかね)
- 公開/非公開フラグ
- テキストフィールド(なんか必要かも知れない)
- created
- modified
最後2つはCakePHPでは制作しておけば勝手にデータが入る、で有名な奴ですね。
あとは・・・基本的に必要な項目を設定したつもりです。(プログラムヘタレなんで、ダメダメかも)
[PHP]<?php
class クラス名 extends AppModel{
var $name = ‘クラス名’; //クラス名の指定
var $useTable = ‘テーブル名’; //テーブル名の指定(任意)
var $primaryKey = ‘id’; //主キーの指定(任意)
//Validateの設定
var $validate = array(
‘id’ => VALID_NOT_EMPTY,
);
}
?>
[/PHP]
まぁModelにもっとプログラムを書かなきゃいけませんが、ヘタレなんでまずはこの程度。
次にController。重い要件としては「読んだURL先のTITLEタグの中身を取得」ですかね。
ブックマークレットから飛んできたGETデータを受け取る場合、CakePHPではこのように書けばOKです。
[PHP]
$url = $this->params['url']['param'];
$select = $this->params['url']['sel'];
[/PHP]
URL先のTITLEタグの中身を認識させるところに苦心しています。なんせ、正規表現嫌い・・・(ぇ
ってことで、脳内リフレッシュして再突撃します。
恐らくfile_get_contents関数で取得→htmlspecialなんちゃら関数でうんにゃら・・・→(越えられない壁)→取得ですね。(ぇ
- Newer: ドメイン失効・・・
- Older: Woopraを導入してみました。
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://manjiro.net/archives/108/trackback
- Listed below are links to weblogs that reference
- CakePHPで一風変わったブックマークレットシステムを作り始めました。その1 from デジタル料理人 - Webプログラマコンサル屋 -