カスタムフィールドあるいは類似の機能について
H.WAKIMOTO > カスタムフィールドあるいは類似の機能について @ 2013/12/16 20:11 |
---|
はじめまして。
baserCMSですでに構築されているサイトのサポートをやることになり、いろいろわからないところがありまして質問させていただきます。 標準のbaserCMSの仕様では、投稿にはタイトル、説明文、本文の3フィールドしかないかと思いますが、これをカテゴリごとにフィールドをカスタマイズしたいと思っております。たとえばイベントカテゴリでは「日時」「場所」「主催」の3フィールドが本文の前に表示されている、のような感じです。フォーラムの2年前の投稿を読んだ限りでは、MTやWordpressのカスタムフィールドに相当するような機能はbaserCMSには実装されていないようですが、前述のようなことを実現するためにはどのようなソリューションが考えられますでしょうか? よろしくお願い致します。 |
goichi > Re: カスタムフィールドあるいは類似の機能について @ 2013/12/16 22:36 |
---|
こんにちは、回答になっていない気がしますが参考までに投稿してみます。
引用: MTやWordpressのカスタムフィールドに相当するような機能はbaserCMSには実装されていないようですが あれば便利なんですが、仰る通り、無いのが現状なので、大きく2パターンの解決方法になるんじゃないかと思います。 1つめはCakePHPの規約に従って、新しく機能を拡張してしまうことです。任意のデータを登録するという意味では、これが最もスマートですし、baserCMS以外の情報(CakePHPについて書かれたブログ記事など)も参考にできるので、(後述する)2つめの方法より、かえって早いかも知れません。 一例として挙がっているようなイベントデータの登録ですと、登録されたデータを使ってイベントカレンダーを出力したり、イベント会場をGoogleMapで表示したりすることがあるかも知れません。また、新たに作った部分に関しては既存の機能に影響しないので安心です。そうした事まで考えると、たぶん作ってしまうのが簡単なんじゃないかと思います(Wordpressなどに比べると機能拡張は敷居が低いと思います)。 2つめは、やはり今ある固定ページ編集の機能を変更することだと思います(プラグイン的な拡張方法もあるかも?)。 大まかな流れとしては、DBにカラムを追加して必要なデータを格納出来るようにした上、編集画面のViewファイルを編集して、特定のカテゴリが選択された際に必要な入力フォームを出力する(ex.イベントカテゴリの時は会場入力フォームが出てくる等)という感じではないでしょうか? あとはフロントページの出力時に、登録されたデータをDBから引っこ抜いてきて表示します。(ヘルパーなどを作ると良いかもしれません) また、もしフォーム入力にこだわらないのであれば、エディタテンプレート機能を利用して入力すべき場所を作り、エディタ内で分かりやすくしておいてあげると良いかもしれません。(テンプレートは複数作れますので、カテゴリ毎に適したテンプレートを用意することが出来ます。) |
H.WAKIMOTO > Re: カスタムフィールドあるいは類似の機能について @ 2013/12/17 19:40 |
---|
goichiさん、ご回答ありがとうございます。
1つめの解決法はたしかに一番確実だと思いました。一点気になるのは、CakePHPで独自に拡張していった場合、baserCMSがバージョンアップした際に独自に実装した部分との整合性がどうなるか、という点です。CakePHPにあまり明るくないためよくわかっていないのですが、baserディレクトリ内に手を付けずにappディレクトリ内に独自の機能を実装していけば、baserCMSのアップデートの影響はほとんど受けないと考えてよいものなのでしょうか? 2つめは、やるとしたらプラグインとして実装した方が今後のためには良いかと思いました。が、将来baserCMS本体にカスタムフィールド機能が実装されることになるのであれば現時点でむやみにプラグイン化してもなあ、というのもあるのでその辺はbaserCMS本体の開発に関わっていらっしゃる方々にも今後の計画をお聞きしたいところです。 とりあえず1つめの案でやってみます。 |
goichi > Re: カスタムフィールドあるいは類似の機能について @ 2013/12/17 22:44 |
---|
どうもです。
引用: baserディレクトリ内に手を付けずにappディレクトリ内に独自の機能を実装していけば、baserCMSのアップデートの影響はほとんど受けないと考えてよいものなのでしょうか? はい、そうお考え頂いて、ほぼ間違いないと思います。もしも、バージョンアップの際におかしな事になった場合は、appに追加した部分だけを、いったん取り外して、バージョンアップだけ先に済ませてしまうことも出来ると思います。 引用: 将来baserCMS本体にカスタムフィールド機能が実装されることになるのであれば現時点でむやみにプラグイン化しても ちょっとコア部分での実装が入るかどうか分かりませんが、今後、baserCMS用のテーマやプラグインの販売サイトが出てくる予定(来春?)という事なので、そうしたインフラが出来上がってくると、自然とプラグイン制作者も増えて、カスタムフィールド的なものも出てくると思います(何だかんだ言って、需要があると思うので、作ったらそれなりに売れそうな予感がします)。 |
H.WAKIMOTO > Re: カスタムフィールドあるいは類似の機能について @ 2013/12/18 13:45 |
---|
ありがとうございます。
納期の問題もありますので、CakePHPで直接拡張していく方向で作業をすすめながら、余力があればプラグイン化についても考えてみます。 |