web-dev-qa-db-ja.com

PHP CMSゼロからオープンソース

問題:サイト用のCMSを開発する必要があります。サイトは少し異なりますが、共通する部分があります。外部ユーザーシステムと権限を使用する必要があります。メニューはサイトごとに異なり、フォームはサードパーティシステムに投稿されます。他にも多くのカスタム機能があります。

ジレンマ:経験のないDrupal、Concrete5、WordpressなどのオープンソースCMSを使用する必要がありますか?またはLaravelまたはSymfonyのような得意なフレームワークを使用する必要がありますか?

質問:

1)オープンソースCMSのコアはより適切にテストされています。それは正しいですが、その上に不安定なモジュールを開発すると、Symfonyで最初からモジュールを作成するよりもサイトの安全性が低下しますか?既存のCMSに強力なモジュールを開発する方法を学ぶには明らかに時間がかかるため、不安定なモジュールと言います。

2)オープンソースのCMSには、多くの拡張機能が提供されています。そうですが、拡張機能は互いに互換性がない場合があります。また、CMSのコアを更新するときは、これらのモジュールも更新する必要があります。私の経験からこれは醜くなります。

3)わかりませんが、カスタムメイドのCMSはサーバー負荷の点で高価であり、カスタムのものより最適化が難しいと思います。これは本当ですか?

4)オープンソースのCMSでは、特にカスタム機能がたくさんある場合、新しいモジュールの開発に時間がかかる可能性があります。私は正しいですか?

5)さまざまな技術的な問題が発生する可能性があるため、新しいモジュールの開発は困難な場合があります。

これらは考慮すべき正当な懸念事項ですか?前述のシナリオで何を選択しますか。

更新:

カスタム機能の例:

カスタムメニューモジュール。フロントエンドは特定の設計に従う必要があり、設計はCMSによって課されるべきではありません。カスタムメニューモジュールを開発する必要がある理由を説明したいのですが、管理者は各メニューのホバー色を選択できる必要があり、管理者は1つ、2つ、または3つの列のリンクを作成できる必要があります。一部のメニュー項目にカーソルを合わせると画像が表示され、他のメニュー項目にカーソルを合わせると地図が表示され、画像を含むツールチップが特定の国/場所に焦点を合わせている場合、クリックできない場合があります。このツールチップには、各アイテムのカスタム色があります。サイトごとにメニュー構造が異なる場合があります。 Drupalでそのようなメニューを見つけることができませんでした。

ユーザーシステム。新しいCMSに統合する必要があるユーザーと権限のシステムが既にあります。これをCMSに複製するか、ログインとユーザー関数をオーバーライドするだけです。これは難しいようです。

サードパーティのデータを使用します。外部データをCMSデータと組み合わせる必要があります。たとえば、ページと呼ばれるコンテンツタイプといくつかのカスタムフィールドがあるとします。これらのフィールドに加えて、外部ソースから取得した他のいくつかのフィールドを使用する必要があります。これが理にかなっているといいのですが。

Multi-site and multi-languageコンテンツの一部を追加する場合、コンテンツの一部が表示されるサイトのリストを選択する必要があります。また、一部のWebサイトでは、多言語機能が必要です。ウェブサイトの現在のURLを保持する必要があります。なぜこれが難しいのか説明する必要はないと思います。まず、コンテンツのWYSIWYGエディターに埋め込む各リンクを、サイトごとに「翻訳」する必要があります。

私はおそらく不必要な詳細を提供したと思いますが、うまくいけばこれは理にかなっています。

ありがとう、R

7
rungurean

この時代には、既存のオープンソースCMSを利用することを選択するしないはずの多くの状況を考えることはできません。

すべてを自分で作成するよりも、適切に設計されたコードベースの上に構築する方が安全です。セキュリティアラートを最新の状態に保つ作業も少なくなります。 Drupalに基づいてビルドし、自家製のモジュールをいくつか追加する場合は、Drupalのセキュリティアラートに対応し、追加のテストを続けるだけです。どこにでも偶然に穴が開いてしまう可能性があり、他の誰も(ブラックハットを除いて)それらを探してはいないでしょう。

OS CMSのアップグレードには問題がありますが、通常は無料のセキュリティ修正や無料の追加機能などを入手しています。それでもコストはかかりますが、独自のCMSを定期的に更新するよりもコストはかかりません。

一般化された実装をサポートしているため、最適化は少し最適化されていない可能性がありますが、プラス面では、人々は非常に大きなサイトを実行することができ、非常に成功したサイトを作成するとハウツーが出ます-そうでなければ時期尚早の最適化に注意してください

モジュールを最初から開発することは、いくつかのPHPページを作成するよりもおそらく難しいでしょう。利点は、最初から作成する必要のないすべての追加機能です。それを活用する方がおそらくはるかに効率的です。それを作成しようとするよりもos cms-very限られた小さなウェブサイトの場合あなたは少しの時間を節約できますが、 Webサイトが存続し、繁栄した場合は、何回も払い戻されます。

TL DR優れたCMSを選び、それを使用して拡張する方法を学びます。

1
mcottle

それは本当にあなたのビジネスが何であるかに依存するでしょう。しかしあなたは言う:

  • 外部ユーザーシステムと権限を使用する必要があります。
  • フォームはサードパーティのシステムに投稿され、
  • 他にも多くのカスタム機能があります。

これらの要件を前提として、使用する既成のcmsはすべて、これらのケースをカバーするためにカスタム機能を実装する必要があると想定します。

既存のコードにCMS機能を追加するためにどれだけの作業が必要になるかを検討する必要があります。

一般的なCMS Webサイトを販売している場合は、既成の製品で提供されるすべてのcms機能に加えて、独自のカスタム機能がいくつか必要になります。したがって、バランスは既製のソリューションに傾いています。

少量のユーザー生成コンテンツを必要とするオーダーメイドのサイトを販売している場合は、CMS機能セットのごく一部のみが必要であり、カスタムスタッフが提供物の大部分を占めます。この場合、独自のソリューションに頼ります。

1
Ewan

あなたがそのCMSにコミットしたいと思わない限り、私はCMSを避けます。

ご指摘のとおり、CMSを効果的に使用するには、CMSを学習する必要があります。それだけでなく、システムでやりたいことはすべてそれを通して行われるため、liveも必要です。これは、一部の種類のサイト(基本的にコンテンツのページを含むサイト)にとって優れた戦略です。しかし、他の人にとっては、あなたのやり方がCMSのやり方と矛盾するなら、それは次々とレンガの壁を意味するかもしれません。

あなたはすでに多くのフレームワークに精通しており、それらのフレームワークはCMSが提供する多くの機能を提供するので、CMSを使用することの大きな利点はわかりません。 CMSの拡張を伴うプロジェクトでは、CMSが非常に迅速に稼働を開始するというのが私の経験です。それから、その後のすべての作業には、その方法に合わせる必要があるため、2倍の時間がかかります。

テストとセキュリティについて言及します。既存のCMSが十分にテストされていることは事実です。また、非常に大規模に攻撃されていることもわかります。以前はJoomlaをベースにしたアプリケーションを扱っていました。私はサーバーに悪用するために悪用したスクリプトから回復するのに何夜も費やしました。システムの核心は問題ではありませんでしたが(設計はいくつかの悪い習慣を助長していると思います)、それはセキュリティホールでいっぱいの拡張機能でした。

基本的に、私は「あなたがそれを自分で行うための技術リソースを持っているなら、自分でそれを行う」キャンプにいます。

1
GrandmasterB

約1年前、最低限の機能を必要とするだけのプロジェクトにLaravelを使用して最小限のcmsを構築しました。

開発に数週間かかりました。そして、すべての新機能は、追加する多くの作業でした。

結局、コア製品ではないものの開発に時間をかけすぎたので、単純な問題に「やり過ぎ」のcmsを使用しないという当時は論理的に思える決定をしたことを後悔しています。

それで、今日、私は私たちが構築しようとしている機能がコア製品の一部であるかどうかを自問しています。もしそうなら、私たちはそれを自分で開発します。それ以外の場合は、オープンソースツールを使用して、90%の機能に満足します。

1
winkbrace