demiurGo.cmsはじめに

創造の歴史。


「他の人が明日しか考えないことを今日してください...」
ソクラテス。


2005年、あるWebスタジオでタイプセッターとして働いていたとき、私は最初にCMSの概念に出会いました。最初に出会ったシステムはNetCatでした。
この製品の管理のしやすさに感動しましたが、もちろん、ワクワクするような欠陥がありました。
それから私は自分が友達になるシステムを自分で作るというアイデアを思いつきました。
たくさんの文献を読み直し、荷物にたくさんの忍耐と何キロものコーヒーを入れた後、私は開発を始めました。


「最初のパンケーキはゴツゴツしますが、キャビアを追加するとさらに良いものになります」
私の最初のCMSはHCMSと呼ばれるシステムでした(ちなみに、トレンドに気付きました-ほとんどの開発者はニックネームのプレフィックスで製品を呼び出します)。 約3か月かかりましたが、結果は確かに私には合いませんでした-非常に欠陥のある機能には役に立たないコードが多すぎました。 そして、本当の「詩人」のように-私は頭の中のモデルを啓発することを望んで原稿を燃やしました。
新しいバージョンごとに多くの経験を積むにつれて、私はどんどん良くなり始めました。 2007年末までに、わずかに湿った焼けた製品HCMS pro v6が得られました。 はい! -5回、ネジから大量のコードを削除しましたが、新しいシステムを数か月テストした後、6回目に削除する必要がありました。

「絶望は精神の弱い人の特権です」

半年の短い休憩の後、私は再び「ノートブック」を開き、いくつかの人気のあるCMSを研究した後、私は再び古いものを取り上げました。

余談の下に線を引いてみましょう:コーヒーをたくさん飲まないでください-それはあなたを破壊します!

動作原理


Webサイトの構造を分析することにより、システムをいくつかのコンポーネントに分解できます。

-デザイン
-構造
-コンテンツ

これらのコンポーネントはすべて、次のように相互に依存する必要があります。
システムは現在のセクションを決定し、添付されたデザインテンプレートを接続し、このセクション向けのコンテンツが必要な場所に実装します。
すべては一見非常に単純ですが、疑問が生じます-どうやって?

パート1.デザイン。


私は既製の「テンプレート化」ソリューションに頼らず、この分野ではあまり気にしませんでした。 私はタスクを設定しました:作成されたデザインがあり、多くの労力をかけずにシステムにそれをプルする必要があるため、5〜10分かかります。

<html>
<head>
<meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" >
<title><?=$ this -> _pageINFO[ "name" ] ?></title>

<?=$ this ->head()?>

</head>

<body>
<?=$ this -> adminpanel() ?>
<?=$ this -> content() ?>

</body>
</html>


* This source code was highlighted with Source Code Highlighter .


それだけです、これは私ができる最も簡単な例です。 そして今、順番に:

$ this-> _ pageINFO-現在のセクションに関する情報を含む配列
$ this-> head() -最も必要なすべてのCSS、JSなどを接続する機能
$ this-> adminpanel() -管理出力機能-ソケット
$ this-> content() -コンテンツ出力関数

これらは、テンプレートで最も必要な実装です。もちろん、それらも実装できますが、CMSを使用しても意味がありません。

CSSとJSファイルは各テンプレートに添付されているため、便利です)

パート2.構造。


各サイトには構造があります。 デザインと機能へのバインディングを指定して、セクションとサブセクションのセットを手動で作成します。

メインコンテンツクラスでは、現在のセクションに関するデータは$ this-> _ pageINFO配列に格納され、現在のセクションのアドレス(url)は$ this-> FullUrl()で決定でき、別のセクションのURLはそのid $ this-> FullUrl( ' id-section ')

パート3.コンテンツ。


既に内容を理解しているように、それが何であれ、テンプレート内で呼び出されます-関数$ this-> content()による登録であり、セクションの作成時に指定された機能によって決定されます。

機能は2つのバリエーションに分かれています。
-システムコンポーネント
-コンポーネント(コンフィギュレーター)

次のシリーズのコンポーネントの詳細...

注意! システムはベータテスト中です。
ここに彼女を「運転」したい人のためのリンクがあります。

Source: https://habr.com/ru/post/J56271/


All Articles