CMS は DOM で表現可能であることが望ましい

今、CMS の内部設計を見直しているのですが、どうも DOM でページ構造を表現すると上手くいく事が証明できそうです。

例えば、子ページの順番をソートする場合や、子ページの一覧の先頭に新規ページを追加する場合、順番の数字で管理するより、前後のリンクで管理する方が、更新が必要なデータの件数が一定であるので、特に子ページの件数が多い場合は望ましいと思われます。

DOM で考えると childNodes / firstChild / lastChild / previousSibling / nextSibling です。

しかし、サイトのページが多い場合、毎回まともに XML を読み込んで DOM として処理していては、処理速度やデータがロックされる期間を考慮すると好ましくありません。
なので、あくまでも DOM 的な考え方でページのオブジェクトの設計・実装を行う事になります。

システムで CMS サーバと呼べるようなデーモンを準備して、常に DOM をオンメモリの状態にしておけるのであれば DOM として処理する方が妥当でしょう。

まぁ正攻法以外もあります。

例えば、先頭の順番の数字が 0 だったら -1 を設定するとか。
途中の番号が歯抜けでも問題無ければ、途中を削除しても順番は更新しないとか。
でも、追加とか移動する場合に、順番を大量に更新する必要がある場合もあります。

結局、この記事はただのメモですので、どーでもいい人はスルーしてください。

<index template="template/index.html">
<page type="list" id="1" title="新着情報" updated="2010-12-01 13:25:30" template="template/page.html">
<parts type="html">
<![CDATA[
新着情報一覧です。
]]>
</parts>
<parts type="list" order="new" />
<page type="page" id="3" title="サイトリニューアルしました。"updated="2010-12-05 13:00:00" template="template/page.html">
<contents>
<![CDATA[
サイトリニューアルいたしました。
]]>
</contents>
</page>
<page type="page" id="2" title="サイトオープンしました。"updated="2010-12-01 13:00:00" template="template/page.html">
<contents>
<![CDATA[
サイトオープンいたしました。
]]>
</contents>
</page>
</page>
</index>

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください