CMS開発プラクティス

今日、サイトの誕生とネットワーク上での生活のために、居心地の良い雰囲気が作られています。 多くのCMSを使用すると、必要な機能をサイトに追加し、そのコンテンツを便利に管理できます。 無料のソリューションでも、特別な知識がなくても、新規参入者は問題なくWebサイトに情報を入力できます(ただし、これは常に良いとは限りません)。 しかし、どのビジネスにも特別なアプローチを必要とする例外があります。 Web開発の特殊なケースについてお話ししたいと思います。

サイトには特別な機能が必要な場合や、顧客が開発者(スタジオ)の前に置く特定の要件を満たす必要がある場合があります。 この場合、追加のモジュールを開発する必要があり、常に便利であるとは限らず、「標準」CMSで実行できない場合もあります。 そのような場合、サイト用に独自の「エンジン」が開発されますが、これは非常にまれです。 ほとんどの場合、開発者(スタジオ)は他の理由でブランド化されたCMSを作成し、ユーザーに追加のアメニティ、機能、または(および)セキュリティを提供します。 私がこのように行った理由と理由、およびその結果については、さらに先に進みます。



まえがき


私は、さまざまな種類のデバイスを改造、作成、改善(廃棄)しなければ生きられない人々に属していることをすぐに言いたいと思います。 この品質により、「車輪を再発明」したり、独自の方法で何かをしたりすることがあります。 デバイス、プログラム、さらには宇宙がどのように機能するかを理解したいという願望は、それらの単純で穏やかな使用を否定することがあります。 Habréには、私が話していることを理解する十分な住民がいて、ウェブ開発におけるこの品質の使用の歴史に興味があることを願っています。

私の考えやアイデアが電子的な形で具体化され、世界中の人々がアクセスできるようになると、とても嬉しく思います。 インターネットはすべてのユーザーにこの機会を与えてくれました。それは素晴らしいことです。 インターネットは私たちのアイデアや欲望の思考で構成されており、私たち一人ひとりがそれを改善することができます。 少なくとも、私はこれに努めており、他の人がその機能を使用できるように支援したいと考えています。 そして今、私のプロジェクトとサイトの将来について考える時です。他の人のために注意深くレイアウトします。 機能性、スケーラビリティ、コンテンツ管理の問題を解決する時が来ました。 それは問題ではないはずですが、私にとってはそうではありません。 さまざまなCMSをインストールしましたが、満足の代わりに疑問が強まり、インスピレーションを受けました...

サイトのコンテンツとモジュールだけでなく、システム自体も管理したかったのです。そのインターフェースと機能です。 私は選択に直面しました:オープンCMSの作業と構造を習得するためにn時間を費やすか、私だけに「従順な」自分の「エンジン」を開発するために(nx 10)時間を割り当てます。 最初のオプションは時間を大幅に節約し、いくつかの利点がありましたが、2番目のオプションの実装には多くの時間と多くの欠点がありました。 しかし、上記の資質と高レベルのインスピレーションにより、選択の余地がなくなり、開発を始めました。



理論


モジュール性、拡張性、および管理の容易さ-これらはプロジェクトの基本的な要件です。 CMS自体は、可能であれば拡張する基本機能(ページ、サイト構造の管理、およびその情報の編集)のみを提供する必要があります。 主な要件は、機能モジュールを使用した柔軟なサイト構成です。 名刺サイトからオンラインストアまで、サイトの機能をある程度拡張する必要があります。 サイト管理をできるだけシンプルで簡単にすることが非常に重要でした。 クライアントが自分で30分以内にサイトのページを追加し、情報を編集し、セクションとメニューを管理できるようにしたかったのです。 したがって、管理プロセスを可能な限り簡素化し、経験の浅いサイト所有者が必要とする必要な機能のみを残しておく必要がありました。

CMS管理パネルの基本機能(操作)のリストは次のとおりです。



この機能は、特に実践が示すように、大部分のユーザー(管理者)を満足させる必要があります。顧客は、この基本的な仕事でさえ怠けることが多いです。 したがって、不必要な要素をロードすることなく、便利なインターフェースと人間工学に焦点を合わせることにしました。



開発


すべてはindex.phpファイルで始まり、必要なディレクトリが表示され、徐々にスクリプトでいっぱいになりました。 構造が変更されました-コードはファイルからファイルに移行され、途中で最適化されました。 関数はクラスに結合され、新しいテーブルと列がデータベースに表示されました。 チェック、デバッグ、および修正は、眠れぬ夜であり、目の疲れです。 ただし、これはすべての開発者によく知られています。

おそらく、歌詞からサイトエンジンの構造とその動作のロジックに精通する時が来たのでしょう。 不必要な詳細を説明するのではなく、簡潔でわかりやすい説明をしようと思います。



構造


Webサイトの構造とコンテンツを提供するコンポーネントは、「論理」レベルと「物理」レベルに分類できます。 データベーステーブルは、サイトの構造とそのコンテンツを決定します(7)。 このデータは「論理」(情報)レベルです。 「物理」(ファイル)レベル(8)には、テンプレートファイルとコンテンツ(4)が含まれます。

テンプレートは、ページの特定の部分のデザインを定義するHTMLコードを含むテキストファイル(.html)であり、特別なディレクトリにあります。 サイトのページは、メインテンプレート(フレーム)を構成する6つのゾーン(見出し、左列、中央、右列、ボトムライン、地下室)に条件付きで分割されます。 各ゾーンには、デザインとファイル名によってのみ決定される条件付き区分であるテンプレートの独自のグループがあります。 つまり、少なくとも1つのテンプレート(たとえば、タイトル)と最大6つのテンプレートからページを構築できます。 テンプレートの構成はセクション内に保存され、その外観を決定します。 もちろん、必要な場合を除き、異なるセクションにはそれぞれ異なるテンプレートとモジュールが含まれる場合があります。

phpスクリプトを含む特別なディレクトリはモジュールであり、サイトと管理パネル(モジュールのプロパティと設定)のメインのインクルードファイル(スクリプト)が含まれています。

複雑な問題は、メインの実行可能ファイルにモジュールを含めるためのメカニズムでした。 このプロセスを実装するためのさまざまなオプションが検討されましたが、「半自動」のオプションにとどまらなければなりませんでした。 ページの特定の場所にモジュールを挿入するには、特別な「タグ」(特別なHTMLコメントの形式)を指定する必要があります。これは、処理中にモジュールのインデックスファイルの内容に置き換えられ、共通の実行可能コードに埋め込まれます。 また、すでにCMS管理パネルで、管理者はインストールするモジュール、場所、およびセクションを決定します。

もちろん、これは理想的な方法ではありません。モジュールを有効にするにはテンプレートを編集する必要がありますが、CMSは1つのスタジオのみで開発され、「クローズ」され、すべての操作は顧客ではなく開発者によって実行されるため、このメカニズムは非常に便利であることが判明しました。

次に、サイトのセクションとページを担当するテーブルの構成を検討します。

パーティションテーブルには、次のメイン列が含まれています。



ページテーブルは次の列で構成されます。



これら2つのメインテーブルに加えて、システムの設定、モジュール、バックアップ、およびその他のニーズのための追加のテーブルがあります。

CMSの構造とロジック







この図は、CMSで実行されているサイトの構造の簡略図を示しています。 Webページ要素を文字通り2つの文で表示するメカニズムの本質を非常に簡単に説明できます。

GETリクエスト(1)では、ガベージのチェック(URI)が行われ、ページとセクションの識別子(3)が取得されます。 セクションのデータが発行された後、テンプレートとモジュールが処理および挿入され、要求されたページに対応するテーブルフィールドからの情報(テキストとコンテンツ)が挿入されます。 それ以外の場合、ページまたはセクションが見つからない場合、対応するエラーページへのリダイレクトが実行されます。



練習する


長い開発期間の後、待望のテスト期間が到来しました。 古い名刺サイトは、使い慣れた起業家が実際のテストのために選ばれたために作られました。 テンプレートに突入した後、彼は新しいダイナミックな生活を始めました。私はこのサイトに欠けていた最初のモジュールであるフォトギャラリーで作業を開始しました。

何日も何ヶ月も経ち、モジュールが作成され、バグが修正されました。 CMSはその責任にうまく対処しています。技術的なニュアンスに気を取られることなく、アイデアを現実に変換するのに役立ちます。 私は自分の仕事が好きで、過ごした時間を後悔していません。

しかし、新しいタスクと要件を設定する時間はまだありません。そのため、CMSの利便性とセキュリティを改善するための新しい作業の準備を進めています。

インターフェイスの更新とコードのリファクタリングが計画されていますが、これはまったく別の話です...皆さんの幸運を祈ります!



All Articles