チートシート作成
チートシート作成しています。
内蔵フィルター モディファイア
内蔵フィルターのチートシートは完成して、バージョンアップのたびに更新していきます。
カスタムモディファイアはあったら面白そうなものを随時追加しています。
→内蔵フィルターチートシート
API
現在はサブパーサーからやっています。
順番に、DB、マネージャ、リソース(優先順位低)、ドキュメントパーサーを追加していきます。
$が付いてるタイトルはメンバ変数です。
追記:Manager APIとか追加も考えたけど、たぶんすぐには必要ない気がしてきたのでひとまず完成ということで。
APIのチートシートが終わったらシステムイベントかな?
APIの改造
APIを勉強して改造していくことでMODX同士でデータの相互取得ができないか実験
例えば他のDBのMODXタグの展開はプリフィックスをつけて[*prefix->pagetitle*]みたいにして取得するとか
APIの直前に$modx->db->connect()を指定していたら既存のAPIで他のMODXからデータを持ってこられるとかすると便利だけど
無理そうなのでDB APIのみで何とかデータを引っ張るやり方を考えればいいみたい
プラグインとモジュールでなんとかできないかな?
おそらくDBを扱うAPIを下みたいな感じで一通りごにょごにょすればできそうなんだけど
やるかどうかは知らないけどアイデアだけそのうちまとめよう。
//API setdocumentMapで他のMODXからデータを取得
//document.parser.class.inc.phpの変更
//function setdocumentMap() //変更前
function setdocumentMap($host = '', $dbname = '', $uid = '', $pwd = '', $persist = 0, $table_prefix='[+prefix+]') //変更後
{
$this->db->connect($host, $dbname, $uid, $pwd, $persist); //追加
$fields = 'id, parent';
// $rs = $this->db->select($fields,'site_content','deleted=0','parent, menuindex'); //変更前
$rs = $this->db->select($fields,$table_prefix.'site_content','deleted=0','parent, menuindex'); 変更後
$this->documentMap = array();
while ($row = $this->db->getRow($rs))
{
$docid = $row['id'];
$parent = $row['parent'];
$this->documentMap[] = array($row['parent'] => $row['id']);
}
}
//同じDBサーバーなら$dbnameと$table_prefixを入れるだけ
//同じDBなら$table_prefixを入れるだけ
//自身のデータを取得
//$modx->setdocumentMap();
//MYSQLサーバーを変更してデータを取得
//$modx->setdocumentMap($host = 'ホスト名', $dbname = 'データベース名', $uid = 'ユーザー名', $pwd = 'パスワード', $persist = 0, $table_prefix='テーブルのプリフィックス');
//DBだけ変更して取得
$modx->setdocumentMap($host = '', $dbname = 'データベース名', $uid = '', $pwd = '', $persist = 0, $table_prefix='テーブルのプリフィックス');
print_r($modx->documentMap);