CMS機能の主要モデル

CMS機能の主要モデル

シラサギCMS機能の独自開発を行う際には次の要素を拡張することが多いです。

要素 標準クラス 抽象モジュール mongo collection
ページ Cms::Page Cms::Model::Page cms_pages
フォルダー Cms::Node Cms::Model::Node cms_nodes
パーツ Cms::Part Cms::Model::Part cms_parts

それぞれ機能的な特徴を列挙します。

Cms::Page

Cms::Node

Cms::Part

種別クラス(ポリモーフィック・モデル)

ページ、フォルダー、パーツは class と route 属性により機能毎に種別分けされています。

各種別のクラスはシラサギ独自の命名規則に従って作成されています。
以下に、記事モジュールのページ、フォルダー、パーツを例に示します。

ページ

class Article::Page
  include Cms::Model::Page
  # 必要なモジュール、アドオンをinclude

  default_scope ->{ where(route: "article/page") }
end

フォルダー

module Article::Node
  class Page
    include Cms::Model::Node
    # 必要なモジュール、アドオンをinclude

    default_scope ->{ where(route: "article/page") }
  end
end

パーツ

module Article::Part
  class Page
    include Cms::Model::Node
    # 必要なモジュール、アドオンをinclude

    default_scope ->{ where(route: "article/page") }
  end
end

独自の種別を追加する際には、module、class、routeを拡張機能に合わせて変更ください。
それぞれのclassで抽象モジュールをincludeする為mongo collectionは標準クラスに一致します。

属性

各標準クラスの主要属性として、 それぞれの抽象モジュール 及びSS::Document、Cms::Contentに 定義されているものを抜粋します。
属性については、今後の開発により変更が発生する場合があります。

field 説明 例 Cms::Model::Page Cms::Model::Node Cms::Model::Part
id シーケンシャルID 1 〇 〇 〇
name タイトル “ふれあいフェスティバル” 〇 〇 〇
index_name 一覧表示用タイトル “ふれあい記事” 〇 〇 〇
filename ファイル名 “docs/page1.html” 〇 〇 〇
depth ファイル名の深さ、スラッシュ(/)区切り 2 〇 〇 〇
order 並び順 10 〇 〇 〇
state 公開状態 “public”, “closed” 〇 〇 〇
released 公開日時 2016-10-28T17:49:33+09:00 〇 〇 〇
created 作成日時 2016-10-28T17:49:33+09:00 〇 〇 〇
updated 更新日時 2016-10-28T17:49:33+09:00 〇 〇 〇
route 機能種別 “article/page” 〇 〇 〇
category_ids カテゴリフォルダーのID配列 [1,2,3] 〇 別addonで定義済み  
view_route 既定のモジュール機能 “article/page”   〇  
shortcut コンテンツ画面へのショートカット表示 “show”, “hide”   〇  
mobile_view モバイル時の表示 “show”, “hide”     〇
ajax_view Ajaxパーツの有効 “enabled”, “disabled”     〇