2009-06-30 13 views
2

現在作業中のCMSは、データ(ニュース、イベント、ブログ、ファイルなど)のライブ編集をサポートしています。ドラフト作成をサポートするシステムを構築するよう依頼されています(モデレート付き)+改訂履歴システム。私が使用しているCMSは家で開発されたので、おそらく最初からコードを作成する必要があります。良いコンテンツ公開システムを設計するためのリソース

アイテムを保存するたびに、データのスナップショットが「タイムライン」に作成されます。ドラフトも同じです。必要に応じて、自動化された機能によりタイムラインドラフトが元のレコードにプルされます。

タイムラインテーブルは、私が他の周りに簡単に見て持っていた

データ+作成/変更された日付+製図日の&主キー、seralisedバージョン(将来の場合)のデータ型を格納しますシステムは、私はまだ私の現在のアイデアから改善する必要があります。

誰かが既にこのようなシステムを構築していると確信しています。私が構築を開始する前に、私のデザインを改善したいと思います。良い記事やリソースも役立ちます。

おかげ

+1

私はWordpressのは、これに似た何かを持っているかもしれないと思いますか? – alex

+0

はい、これらのすべてのためにWordPressを使用することができます。作業のやり方や、おそらく利用可能なプラグインを使用することで多少の調整が可能です。 – balpha

+0

あなたはワークフローの解決策を見つけたり、ビルドしたりしたいと思っているようです。 –

答えて

1

私は、各行を1つの文字列にエンコードするためにserialize()を使用し、それを中央データベースに保存することが解決策になると思います。

あなたはなど、関連するテーブルを使用して「ライブ」のデータベースを持っていると思いますが、あなたは(パブリッシュ]をクリックせずに)何かを編集または作成するときには、代わりにあなたのメインテーブルに保存されているのと同様に、テーブルに行くだろう:

id - PRI INT 
date - DATETIME 
table - VARCHAR 
table_id - INT 
type - ENUM('UNPUBLISHED','ARCHIVED','DELETED'); 
data - TEXT/BLOB 

...タイプが '未公開'に設定され、tableとtable_idが格納されているので、元の場所がわかります。 publishをクリックすると、現在のテーブルの内容がシリアル化され、上記のテーブルに 'アーカイブ'が設定され、最新の変更(未公開とマークされています)が読み込まれ、データベースに格納されます。行を削除する場合も同じことが言えます。行を削除して、削除/ロールバック機能を有効にするには、その行を「削除済み」としてマークします。

完全に機能するにはかなりの労力が必要ですが、完全な公開/非公開とロールバック機能を提供する必要があります。カスタムデータベース関数に正しく統合されているので、(SQLの観点から)これをすべて透過的に行うことも可能です。

私はこの問題を解決するためにこれを実装しようと計画していましたが、私の考えではまだ理論的ですが、そのアイデアは健全だと思います。

+0

ありがとう、これは私の元の計画を確認します。 –

0

は、DotNetNukeのは、優れたオープンソースCMSですが、あなたはアイデアを得るために、そのシステムのためのsoureを読むことができました。あるいは単にDotNetNukeを使うこともできます。

http://www.dotnetnuke.com/

1

これは非常にwikiのような私には聞こえます。あなたはMediaWiki、Wikipediaで使用されているシステム(PHPとMySQLも使用しています)を見てください。

0

私はそこに、この機能をボックス外でサポートする多くのシステムがあると思います。私はカスタムビルドを行うためのあなたの考慮事項を知らないけれども、これらのいくつかを検討することを検討してください。彼らはあなたが必要としているものを支えることができ、そしてあるものを支える可能性が非常に高いです。

Drupalを検討することを検討してください。私は依然として出版のための主要なCMSだと思います。ワークフローモジュールと組み合わせて、Drupalの必要なものをすべて含んでいます
http://drupal.org
http://drupal.org/project/workflow

と使いやすさのために下書きを保存追加:
http://drupal.org/project/save_draft

関連する問題