2011-06-24 10 views
5

私は、Object Oriented PHPでギャラリースクリプトであるCMSを作っています。とにかく、問題は、私がオブジェクトを作るための基本的なレイアウトを持っていることです。そして、私が一緒に組み立てる必要があるポイントまで、私はこれをどうやって行うのが困っています。CMSはどのように構造化されていますか?

私は本質的にナビゲーション、データ、ギャラリー、およびモジュールクラスです。モジュールはページ、カテゴリなどを表します。問題はギャラリーが画像を出力し、モジュールがページのデータを与え、ナビゲーションが(あなたが推測する)ナビゲーションを作成するということです。あなたは写真を手に入れます。インデックスページで

、私は(これは変更されますが、それは私がそれを設定するために始めていた方法のための例示である)は、基本的にこれをやって終わる:

$navigation = new Navigation(); 
$navigation->top(); 

$page = new Module(); 
$page->basicPage($_GET['m']); 

basicPageは()いくつかのことを行います主にこれが問題になります。

などです。

basicPage()を呼び出すと、設計者や選択肢をほとんど制御できないという問題が発生します。あなたが見たように、それはthumbGalleryであり、それは完全な画像を許さず、サムネイルのサイズを設定することさえできません(サムネイルのサイズを自分で呼び出すことができます) 。

私はこの問題を解決する方法をいくつか考えました。私はこれらの基本的なページを持っていませんが、私はデザイナーにWordpressのようなテンプレートを作りました。私はこのソリューションを嫌っています。なぜなら、それは徹底していても、設計プロセスを複雑にするからです。私はすべてが制御されるようにしたい、そして一つの方法です。もちろん、あなたはデザイナーとしての要素や他のいくつかのトリックに「表示:なし」することができますが、Wordpressがそれをする複雑な方法を使わずに、たくさんのことをする能力を持たせたいと思います。

私の質問は、どのようにシンプルで柔軟性のバランスを取るのですか?

どんな助力でも、アイデアは高く評価されます。ありがとう。

編集:私は言及を忘れた。問題は、単にこのインデックスのすべてがこのデータを持っていることからです。そうでなければ、if/elseなどの多くをやらなければなりません。そして、私は本当にこれを手続き型プログラムにしたくありませんでした。物事がダウンして、我々は良いです。モジュールはギャラリーとページの両方を表します。ほとんどのページには画像が添付されておらず、カテゴリには画像がありますが、必ずしもテキストではありません。 thumbGalleryを呼び出すとエラーが発生し、単なる情報ページです。情報ページを呼び出してカテゴリである場合、エラーを回避するために画像は表示されません。私は、基本ページと呼ばれるもので一緒に構築することができましたが、私が以前に指摘したような問題は、デザイナーがPHPを混乱させることなくどれだけの自由を制限するのかということです。 PHPに、残念なことに。私はデザイナーですが、私はあまりにもプログラムが起こります。

+0

[Front Controller](http://martinfowler.com/eaaCatalog/frontController.html)デザインパターンを見てください。 – Smurf64

答えて

1

あなたのコードの残りの部分を見ることなく、あなたがすでに持っているものを考慮して最良の解決策を知るのは難しいです。私は過去9年間、独自のカスタムCMSアプリケーションフレームワークをゼロから開発しました。私はあなたにいくつかのヒントを教えてくれることを嬉しく思っています。

すべてのCMSコンテンツをデータベースに格納しているとします。ギャラリー設定の構成をデータベースに格納することは、可能な解決策である可能性があります。理論的には、ギャラリーをさまざまな方法で表示するためには、異なるビュー(MVCパターンに従う)が必要です。複数の画像サムネイルを表示するための一覧表示、1つの画像を表示するための一覧表示、おそらくカテゴリを一覧表示するための表示。

したがって、データベースでは、ページXがカテゴリビューの代わりにサムネイルビューを表示するように定義することができます。

これが問題の解決策であるかどうかはわかりませんが、これは過去のCMSでどのように行ったかという非常に単純な例です。

+0

さて、私はすでにそれ(ページ、カテゴリ)のような何かをやっています。しかし、カテゴリリストビューのようなものは、データベースに格納する必要はなく、PHPで行うことができます。これは、カテゴリのデータがすでにモジュールテーブルに格納されており、正しく呼び出されて表示される(PHPを使用してフォーマットする)必要があるためです。 私が特に抱えている問題は、デザイナーがどれくらい変えることができるかということです。例えば、設計者がするように設定ページをお勧めします: ラッパー{ヘッダー、ナビゲーション、コンテンツ、フッター} または多分: ラッパー{左[ヘッダー、ナビゲーション]、右[コンテンツ]、フッター} –

+0

しかし、あなたの提案はまだまだ良いことです。このアイデアに感謝します。おそらく私が与えた説明で、あなたはよりよく理解できるかもしれません。問題は、私がテンプレートを作っている人がそれらを簡単に作ることができるようにしたいということです。 おそらく、おそらく...私は彼らには基本テンプレートを利用するオプションがあるべきだと思っていますが、望むならもっと深くすることができますか?あなたはそれが容認できると思いますか? –

+0

それは間違いなく大きなデザインの決定です。ビューをカスタマイズする機能を提供することは明らかです。しかし、ビューの各インスタンスに対してそのビューをカスタマイズできますか?したがって、ページAはカテゴリリストとページBのカテゴリビューのカスタムビューを持つことができますか?カスタムビューはどのように定義されますか?これが実際にどのように行われるかは、CMSの他の部分で使用したいくつかの決定と哲学によって決まります。私のCMSフレームワークははるかに複雑で、データベースとカスタムビューの両方で非常に多くのカスタマイズが可能でした。 – Percy

関連する問題