Joomlaコンポーネント内で(モジュールでも良いけど)カレンダーを表示させるのは簡単で、以下のようにやればいい(ただし正式なドキュメントは見あたらず)。
JHTML::_('calendar', ....);
Joomlaのカレンダー機能はこのカレンダーを使っているらしい。
オリジナルのカレンダーのドキュメントを見ると色々カスタマイズ出来るみたいだけど、Joomlaからだと以外に面倒だったのでメモ。本家フォーラムでも同じ事を質問してる人がいた。
自宅警備員兼エンジニアのブログ
Joomlaのコンポーネントの話。MVC形式の場合、一般的にはviewはview.html.phpというファイル名で、そこでtemplateを読み込んで表示する、と言う流れになる。
html以外、例えばAJAXなどでXMLを表示したい場合のやりかた。
Controllerへの引数にformat=xmlというのを渡すと、view.html.phpではなくてview.xml.phpが呼ばれる。
HTMLヘッダーのmime typewを正しく設定するには、Controllerの中で以下のようにすれば大丈夫っぽい。
$doc =& JFactory::getDocument(); $doc->setMimeEncoding('application/xml'); $doc->setType('xml');
タイトル通り。全画面表示したりとか、新規ウィンドウに表示したりとかしたい。
新しいテンプレートを使って、全画面表示したいコンポーネントのページに適用するだけ。
ここを参考にした。
ここ1ヶ月くらい作成中のJoomla!コンポーネントがようやく形になってきた。そのコンポーネント内部ではCommunity Builderで追加したフィールドの値を参照してる。
そうしたことをするには、以下のようなコードを埋め込む必要がある。
global $_CB_framework, $ueConfig, $mainframe; if ( defined( 'JPATH_ADMINISTRATOR' ) ) { if ( ! file_exists( JPATH_ADMINISTRATOR . '/components/com_comprofiler/plugin.foundation.php' ) ) { echo 'CB not installed!'; return; } include_once( JPATH_ADMINISTRATOR . '/components/com_comprofiler/plugin.foundation.php' ); } else { if ( ! file_exists( $mainframe->getCfg( 'absolute_path' ) . '/administrator/components/com_comprofiler/plugin.foundation.php' ) ) { echo 'CB not installed!'; return; } include_once( $mainframe->getCfg( 'absolute_path' ) . '/administrator/components/com_comprofiler/plugin.foundation.php' ); } cbimport( 'cb.plugins' ); cbimport( 'language.front' );
でないと、以下のようなエラーが出る。
Fatal error: Class 'comprofilerDBTable' not found in /path/to/joomla/administrator/components/com_comprofiler/library/cb/cb.tables.php on line 16
詳しくはここを参照。
環境:
Joomla 1.5.15
Community Builder 1.2.2
まだまだJoomlaのコンポーネントを作成中。
JoomlaでMVCスタイルに沿ってコンポーネントを作る場合、各クラス・ファイル名をJoomla流儀の命名規則にしておかないと結構面倒。
■ViewでView名とは違う名前のModelを使いたい
admin側の機能を先に作ったんだけど、ユーザー側のコードでもadmin側で作ったmodelを使いたい。色々調べたり試行錯誤したりして、1時間くらいかかってしまった…
フォーラムのこの書き込みが結構役に立った。
またまたJoomla!コンポーネント作成の話。
Webアプリを作ってりゃトランザクションが必要な場面の1つや2つはあるもの。そのやり方だけど、JDatabaseのsetQueryメソッドでSTART TRANSACTIONとかを実行するという原始的なやり方。英語のフォーラムより。
JDatabaseにBeginTransとかのメソッドがあるけど、中身は全部空。今後実装されるのかな・・・
当たり前だけど、トランザクションを使うには、テーブルはInnoDBじゃないとダメ。Joomla!のテーブルはMyISAMなので要注意。
引き続きぼちぼちJoomla!でコンポーネントを作ってるんだけど、単純なCRUDを作るのが結構めんどくさい。せっかく省力化のためにCMS使うのに、ちょっと機能追加しようと思ってコンポーネントを作ろうと思ったら、単純なCRUDに時間がかかっては本末転倒のような…symfonyみたいなフレームワークを一度使っちゃうともう元には戻れないなぁ。
さて、何かいい方法がないかと思って調べてたら、1.6ではそのあたりが結構改善されているっぽい。1.6でのMVCのチュートリアルなんだけど、XMLでビューの定義とかをしている。
1.6に乗り換えようかなぁと思ったけど、まだα版なので断念した。