独自のコンテンツを導入する場合、コンポーネントを作成し、 自作テーブルの値を読み書きしています。
今回は、独自記事の投稿フォームのフィールド数が100個ほど、 パラメータがそれぞれに2~10個ほど存在しています。 自作のフォームでは工数がかかりすぎ、かつ自由度を高めると、それだけで独自フレームワークになってしまいます。
短期でコスト重視、かつ高機能という困難な対応なので、 JSeblodを採用しました。
海外を含めると導入事例も多く、機能は複雑ですが、動作的には安定してます。
さて、導入していて手間取った点があったので挙げておきます。
カテゴリーブログでのレイアウト
index2.phpを作成
カテゴリーブログで表示させたいフィールドの後に「ReadMore」フィールドを入れる
index2.phpしか適用されていない場合は、「ReadMore」があることを確認する
基本的に、カテゴリーブログレイアウトで表示させる情報は、テーブルスタイルになることが多いと思います。
index2.phpで取得できる(jSeblodのコンテンツタイプの)フィールドは、「ReadMore」フィールドの上部にあるフィールド
のみになります。実際コンテンツを表示させているのは「Com_Contents」なので、その仕様に依存してるようです(多分)。
コンテンツタイプで「管理フォーム」のフィールドを色々編集しているうちに、「 コンテンツ」のフィールドの適用、並び順の
確認を忘れてしまい、何故か特定のフィールドの情報だけ取れないなんてことがありました。
記事(詳細)のレイアウトについて
ベースとなるテンプレートの選定
配列データの取得
jSeblod標準タブの使用
単独記事の表示用のテンプレートは、「Advanced Content」を利用しました。これは、今回作成したコンテンツタイプの
フィールドの中に配列が含まれるためです。
単純なフィールドの並びだけのコンテンツタイプであれば、
{jb_blown} $item->value; ?>{/jb_blown}
で取得できますが、コンテンツタイプの中に、動的に複数生成しているコンテンツを含む場合などは、単純にこの方法では値が取得できません。
例)記事の中に任意の数の画像を埋め込むような場合、「Image Upload」のコンテンツタイプをグループとして用意してます。
この場合、ビューで取得できるデータは単一フィールドではなく、多次元配列となります。
Advanced Contentsテンプレートフォルダ内のindex.php(単一記事用のViewに当たるもの)を見るとわかりますが、
アイテム(フィールド)の 種類(単一フィールド、配列)によってループが異なります。
Advanced Contentsのテンプレートを使えば、作成したコンテンツタイプのそのままの並びで表形式の出力は可能です。
ただ、実際のページはそう単純な一覧表形式ではないので、単純ループで上のフィールドから値を並べるだけでは実情に合いません。
{jb_iconic_arrow}結局、ループで取得した値を一度変数に格納し、記事のブロックに当て込みました。
★メインのコンテンツタイプに取り込んだ、サブのコンテンツタイプでテンプレートを指定しているので、そちらが反映されると思って
ましたが、メインのコンテンツタイプで指定したテンプレートのみが有効となりました。
配列要素を種類別に取得したい場合は、ループの先頭で配列(グループ)の名前を調べて分岐すればいいと思います。
ちなみに、配列の場合、{jb_blown}$this->{$item}{'group'}->name{/jb_blown}で名前が取れます
その他
jSeblodにはACLとサブカテゴリーの機能も持ち合わせているので、記事を管理者が代理で作成し、その後フロントページで
任意の(指定した) ユーザのみが記事を編集するなんていうこともできます。
ショップポータルなんかの場合、お店の情報を管理者が代理登録、もしくは外部サイトからJSONやXMLで取得して登録。
その後お店のオーナーが部分的に編集ということが良くあります。
こういった要件の場合、柔軟に仕様変更でき、拡張性を持たせるにはjSeblodが有効かと思います。
本格的なサイト開発の場合は、やはり独自テーブルと連携したページを作りますが、それはそれで、コンテンツの拡張のたびに
COM_CONTENTSやCOM_SEARCHとの連携を一々更新する手間が発生して大変ではあります。
サイトの規模、コストの兼ね合いでは採用するのもありかと感じました。
jSeblod自体の品質ですが、安定してると思います。
元々の記事の中に独自の「::jSeblod::」というタグを埋め込んで、記事のロード時に置き換えるというのが基本機能なので、
それを超えた凝った使い方をしなければ、有る程度PHPの知識がある人であれば使えるコンポーネントでしょう。
Joomla1.6環境で作り直したらデモサイトにでもアップしようと思います。