ネットコモンズ – Netcommons 変更メモ(その1)

■ネットコモンズ変更メモ(その1)


何も分からない状態からネットコモンズをカスタマイズしてみたときに気づいた備忘録&メモです。

レンタルサーバー上でのバックアップとレストアが確実にできる状況を確認できたので、いよいよネットコモンズの変更に挑戦してみたいと思います。

注)
内容の正確さは全くわかりませんし、個人的なメモなので当てになるかどうかわかりません。間違えていたら教えて頂けると幸いです。

XOOPS等に比べてとにかく情報が少ないので、手探り状態です。


NetCommonsで開発時にEclipseを使ったときの問題

どうやらNetCommonsのファイル郡はBOM無しUTF-8形式のファイルになっているようです。

eclipse3.5(PHP)の日本語版を使ってみようと環境を整えましたが各分野のコンテンツ設定でUTF-8を選択し順調に行っていたかと思えばCSSファイルでBOMなしによるコード誤検出でSJISとして扱われるので全角文字がどうしても文字化けします。

Web上で色々探したのですが未だに解決できず・・・・

日本語版でunicodeに完全対応していないソフトはBOM無しUTF-8をはしばしばSJISと勘違いするという情報は何件か見つけたのでこれかもしれません。

ghs4gj room [ALL IS VANITY]

しかし

CSS以外のPHP,TEXT,INI等はOKなのにどうしてCSSだけ・・

この問題はただ単に設定ミス、オペミスの可能性も高いです

どなたか解決方法を知っていたら教えてください。


MapleとSmarty

その昔PHPが登場し始めた頃趣味程度に簡単なWebアプリケーションを組んでいたのですが、NetCommonsのコードをみて見慣れないコーディングに戸惑いました・・?

どうやら「Maple」というフレームワークと「Smarty」という仕組みを使ってNetCommonsは動作しているようです。

まずはこの「Maple」と「Smarty」という仕組みの勉強をしないといけないのかもしれません。

maple : http://kunit.jp/maple/index.html
smarty : http://www.smarty.net/manual/ja/what.is.smarty.php

参考 :
http://www.php-labo.net/tutorial/class/smarty.html
http://www.phppro.jp/school/smarty/

説明を読んでみるとコア部分の開発とデザインの開発を分離させることが目的の仕組みらしいのでそこまで深く知る必要はなさそうですが、コードの変更には必要な知識のようです。

この辺からぼちぼち勉強していきたいと思います。


SVNで全体像を追う

何をいじれば何のファイルが変更されるのかを知りたくて、TortoiseSVNで差分の管理をしてみました。

すると変更後にモジュールのアップデート(コンパイル??)を必要とするNetCommonsでは特に変更していないファイルに大量の変更が発生するようです。

始めネットコモンズ以下全てのフォルダーを対象に差分管理したところ「htdocs」は妨害が多く起こり管理不能になり、「Webapptemplate_c」は変更もしないのにsmatyがコンパイル時間でファイルを書き換えるようです。

ghs4gj room [ALL IS VANITY]   ghs4gj room [ALL IS VANITY]

コンパイル後に作成されたファイルはSVNで管理しないように管理するフォルダーを分けないと差分チェックが大変やりにくい状態になりそうです。



基本操作をマスター

NetCommonsのデザインカスタマイズやソースコードの変更をするのが目的ですが肝心のNetCommonsの操作方法が分かりません。まずはこちらから勉強しなければ・・・

マニュアル : http://www.netcommons.org/nc20/nc20_manual/japanese/index.html
http://www.netcommons.org/nc20/nc20_manual/japanese/admin_manual/index.html



NetCommons2のライセンス

NetCommons2系のライセンスはFreeBSDライセンスと公式ページに書いてあった。

そこでFreeBSDライセンスとはなにかをWebで調べてみると概ね下記のようなものだった。

FreeBSD公式ページのCopyright項より

(出典:http://www.freebsd.org/ja/copyright/freebsd-license.html )

ソースコード形式であれバイナリ形式であれ、変更の有無に関わらず、以下の条件を満たす限りにおいて、再配布および使用を許可します:

1.ソースコード形式で再配布する場合、上記著作権表示、本条件書および下記責任限定規定を必ず含めてください。
2.バイナリ形式で再配布する場合、上記著作権表示、本条件書および下記責任限定規定を、配布物とともに提供される文書 および/または他の資料に必ず含めてください。

IT用語辞典 e-Wordsより

(出典: http://e-words.jp/w/BSDE383A9E382A4E382BBE383B3E382B9.html )

オープンソースソフトウェアで使用されているライセンス体系
無保証・免責を宣言し、再配布する際に著作権表示を行なうことのみを条件とする、極めて制限の緩いライセンス。
著作権表示さえしておけば、BSDライセンスのコードを他のプログラムに組み込み、しかも組み込み後のコードを非公開にできるため、商用化のしやすいライセンスである。
また、GPLのように再配布時のライセンス条件を制限することもない。

とある。官製CMSであるNetComonnsにはふさわしいライセンスではありそうです。


サイト内で使用する画像の扱い

背景用の画像

webappstyleimagesbackgroundの下に「scroll」と「fixed」のフォルダーを作成しその中に画像を入れる
「scroll」内に入れた画像はスクロールする背景
「fixed」内に入れた画像はスクロールしない背景

モジュールやテンプレート用の画像
webappmodulespagesfilesの下に「images」フォルダを作成しその中に画像を入れる
(imagesの下にサブフォルダを作成可能)
画像ファイルを入れるのは
webappmodulespagesfilesimagesfefpic1.gif
でもソース中は

‘<{$smarty.const.CORE_BASE_URL}>/images/pages/fef/pic1.gif’

を指定すると表示が出た。どうしてフォルダ構成が違うんだろうと色々動作させてみると。

モジュールの一括アップデートを行う際「webappmodulespagesfilesimages」からinstall.inc.phpの「CORE_BASE_URL」に指定された
フォルダに画像ファイルをコピーしているようです。

その為、フォルダ構成も少し違い、またwebappフォルダの画像データを変更しても一括アップデートするまで画像は変更されないみたいです。


公式サイトにある情報からカスタマイズしてみる

情報が少ないNetCommonsですが公式サイト上に少しだけカスタマイズ方法が載っていました。

これを参考にソフトの構成を追ってみたいと思います。

1)まず変更するモジュールのテンプレートを準備するようです。
webappmodulespagestemlatesの下に変更するテンプレートを準備します。
webappmodulespagestemlatesdefault
をコピーし自分の好きな名前に変更
webappmodulespagestemlatesfef

2)データベースのconfigテーブルでconf_id=70の値をdefaultからfefに変更する
phpMyAdmin等のコンソールから該当のデータベースを開き値を変更します。

ペンのマークのアイコンをクリックすると値が編集できるようです。
ghs4gj room [ALL IS VANITY]

conf_valueを自分のテンプレートフォルダ名に変更して「実行する」をクリック

ghs4gj room [ALL IS VANITY]

これでテンプレートに自分のユーザ用テンプレートが選択されたようです。

テンプレートが変更されたら各ファイルを編集できます。

ファイルの構成を調べてみると

「page.html」から始まってその中にinclude fileとして「addblock_box.html」「footer.html」「main.html」「headermenu.html」が指定されているようです。
そこでヘッダーメニュを変更したい場合は「headermenu.html」を変更
フッター部分を変更したい場合は「footer.html」を変更
メイン部分を変更したい場合は「main.html」を変更するようです。
ページそのものの変更は「page.html」になるようです。

ユーザ用のCSSを指定したい場合は「webappmodulespagesfiles」フォルダの下にcssユーザフォルダを作成しそこに入れるようです。
webappmodulespagesfilescssfefにCSSファイルを入れることにします。
CSSのファイル名は「page_style.css」で固定のようですのでその中に記述します。
既存の部分に同じクラスがある場合は既存の部分にも影響するようです。

page.htmlを編集することで自分で作った部分とNetCommonsで作った部分を分けて編集するイメージで独自のページが作れそうな感じです。

上記をまとめると
背景画像は
webappstyleimagesbackgroundscroll
webappstyleimagesbackgroundfixed
に入れる

テンプレートやモジュール用の画像は
webappmodulespagesfilesimagesユーザテンプレート名フォルダに入れる
例: webappmodulespagesfilesimagesfefpic1.gif

ユーザーテンプレートは
webappmodulespagestemlatesユーザテンプレート名フォルダに入れる

ユーザー用テンプレートのCSSファイルは
webappmodulespagesfilescssユーザーテンプレート名フォルダpage_style.cssに記述

テンプレートの変更はデータベースの接頭語_configテーブルのID70番default_tempの値を変更する
page.html等を編集し変更を加える

これで基本的なカスタマイズはできるようです。
と思っていたらこのpage.htmlは全てのページにかかるみたいなので、共通の部分をカスタマイズする場合のみ使えそうです。

各個別のページ編集方法をこれから調査してみます。表示中の画面を得られる変数とかあればすぐに解決するのですが・・・
変数リストどこかにないかなぁ~

4/13追加
$page_idを使えば解決できそうです。

4/17追記

基本的なカスタマイズはこの方法でできそうですが、本格的なカスタマイズはwebappstylethemesの下に各テーマを作らないとダメそうです。

情報を収集しないと・・・・

Webapp以下をSVNで管理するためには一度「template_c」内のファイルを全て削除してsvnにインポートする。

チェックアウトすると「configinstall.inc.php」の読み込み専用属性がなくなっているのでプロパティーから変更する。

「template_c」以下のファイルは勝手に生成されるようなのでsvnでは管理しない

なんだか、かなりまとまりのないメモになってる・・・・

スポンサーリンク

コメントを残す

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

日本語が含まれない投稿は無視されますのでご注意ください。 本文に全角文字を2文字以上含めて下さい (スパム対策)