プラグインだけを使った投稿可能なエクステンションを考えてみた
メールで相談があったので考えてみた。
(たまにそういった相談があったりする。もちろんはじめての方ばかりです。)
Joomla!のエクステンションでできることをまず整理してみた。
- コンポーネント
- コンポーネントだけができること
- 独自のコンポーネントのURLを作ることができる。
というかつくられる。 - データベースをインストールできる。
- 独自のコンポーネントのURLを作ることができる。
- 他でもできること
- データを表示する。
- コンポーネントだけができること
- モジュール
- モジュールだけができること
- ページ内で表示する領域をモジュールポジションで決められる。
これくらいか・・・。
- ページ内で表示する領域をモジュールポジションで決められる。
- 他でもできること
- データを表示する。
- モジュールだけができること
- プラグイン
- プラグインだけができること
- プラグインが呼び出されるタイミングに合わせてそのデータに対して処理をする。
これくらい?
- プラグインが呼び出されるタイミングに合わせてそのデータに対して処理をする。
- 他でもできること
- データを表示する。
- プラグインだけができること
さて、書いてみると作成するのに一番面倒そうなのは、コンポーネントですね。次はモジュールでもプラグインでも同じくらいっぽいです。内容によってはといった感じでしょうか。
今回の相談ではまず、
- 投稿機能
- 内容をデータに反映(表示)
の2点が大きな目的です。単純に考えるとコンポーネントを作成するしか無いのですが、もしデータベースなりで(データベースでなくてもファイルベースでも構わないならそれでもOK)、とにかくデータを管理することさえできれば、モジュールでもプラグインでもコンポーネント並のことができるのではないかと考えました。
・・・いやいや、もっと簡単なのを思いつきました。
よく考えてみれば、Joomla!のコンテンツのデータベーステーブル(jos_content)には、現在使われていないフィールドが存在します。それを使いましょう。「parentid」です。これを使えば記事のひもづけができる。それなら、記事をデータベース(データを保存するもの)として使えるからデータの保存方法を考えなくても良さそうだ。
そこで、こんな方法は(流れ)どうでしょう。
- イベント記事を作成する。(コンテンツアイテム)
プラグインなので何か母体がないと表示されません。なのでイベントがあれば先に告知などをするでしょうから、先にそれを作成する。 - 記事で表示されるプラグインを作成する。
- ログインしたら、元のイベント記事IDをparentidとした記事が無ければ、フォームをプラグインで表示する。あれば何もしないか、元のイベント記事IDをparentidとしている記事を表示するか、その記事へのリンクを表示(これが良いでしょうね)する。
- フォームからの投稿は、表示される記事に向けてPOSTする。(これがミソですか。)
- POSTされたそのプラグイン用のデータがあれば、そのプラグイン自身でその元記事をparentidとする新規記事に投稿されたデータを処理して記事として格納する。
プラグインに必要な条件処理(パラメータ)
- イベントカテゴリーまたは、セクションでのみ動作させる。
やたらめったらフォームが表示されても困る。ログインしないと表示されないけど。 - 投稿権限レベルの設定(登録ユーザー、編集者など。一般は駄目でなるべく上の方が良い)
このレベル設定によって投稿したデータ(記事になる)が自動で表示されるのか、管理者が許可しないと表示されないのかを決定するように記事を登録する。具体的には、Authorなら自分の記事だけだし、Editor以下は管理者の許可がいる。Publisherで初めて自分の投稿がそのまま表示されるといった具合です。
できた!!
なんとなくできそうですね。コンポーネントを作成しようと思うとたくさん書かないと駄目ですが、プラグインなら楽そうです。
ここまで書いたらプラグインを作成できる方なら可能ではないかと・・・。
有料ならいくらで作ってくれるかって?
そうですねぇ・・・有料で私が配布しても良くて且つうちのリンク広告付きで5,000円、駄目なら5万円くらいでしょうか(かな~り大雑把)
・・・なんて野郎だ、相談に来ているのにふんだくるのか・・・いや、でも仕事だも~ん。でも、儲けようと思ってたらここまで書かないでしょ・・・。































