concrete5のデフォルトだと出力されたページのヘッダに
<meta name="generator" content="concrete5 - xxx" />
という感じで自動的にconcrete5のバージョン情報が入ります。
セキュリティ的にもあまりよくなさそうなので、このメタタグが出力されないようにカスタマイズします。
/concrete/elements/header_required.php
を
/elements/header_required.php
にコピーして40行目あたりの
<meta name="generator" content="concrete5 - <?php echo APP_VERSION ?>" />
を削除します。
このようにすると優先的に「/elements/header_required.php」が読み込まれます。
これを「オーバーライド」といい、どのファイルを編集したか(カスタマイズしたか)がすぐわかり、アップグレードの時も上書きされずに住みます。
タグ:
concrete5,
Tips
concrete5 でコントローラの中でメール送信する時は、mail helperを呼び出して次のように設定・送信します。
$mh = Loader::helper('mail');
$mh->to( 送信先メアド );
$mh->from( 送信元メアド );
$mh->addParameter( 'param_a', $param_a );
$mh->load( 'mailbody' );
$mh->setSubject( メールタイトル );
@$mh->sendMail();
$mh->load( 'mailbody' );
の部分ではメール本文を設定しています。
/mail の中にテンプレート用のファイル ‘mailbody.php’ を用意します。
‘mailbody.php’ の中では変数「$body」に本文を代入します。
例えば
<?php
$body = 'こんにちは、メール本文です。';
?>
とすれば ‘こんにちは、メール本文です。’ という文字列がメール本文にセットされます。
$mh->addParameter( 'param_a', $param_a );
の部分では ‘mailbody.php’ に渡すパラメータをセットしています。
ここでセットした値は ‘mailbody.php’ の中で使うことができます。
最後は
@$mh->sendMail();
で送信します。
タグ:
concrete5,
Tips,
メール,
開発
concrete5はサイト内検索用にサイトをインデックス化する機能を持っています。
また、concrete5のインストールディレクトリにsitemap.xmlをつくる機能もあります。
サイトが成長するにつれ、この2つはとても重要な機能になります。
でも、この2つの機能はデフォルトでは手動でしか動かせません。
自動で実行させるためにはサーバのcronという機能を利用します。
coreserverでは管理メニューの「CRONジョブ」で自動実行させたいシェルスクリプトの指定と自動実行させる時間の間隔を設定することができます。
シェルスクリプトには次のように書きます。
#!/bin/sh
/usr/bin/wget --spider http://example.com/index.php/tools/required/jobs?auth=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
exit
http://example.com/index.php/tools/required/jobs?auth=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
の部分はconcrete5の管理画面の「メンテナンス」を開いた最下部にある「もしもこのジョブをバックグランドで実行されたいのであれば、Cronなどを使い、定期的、自動的に下記のリンクにアクセス出来るようにして下さい:」のURLを入れます。
このシェルスクリプトを「c5jobs.sh」などと名前をつけ、サーバにアップロードして実行権限を与えます。
coreserverのCRONジョブ設定でアップロードしたシェルスクリプトの指定と時間の間隔を設定すると自動で検索用索引作成とサイトマップファイル作成が行われるようになります。
はじめはphpでURLにアクセスさせてみたのですが、ファイルが見つからないエラーになってしまったのでちょっと調べました。
lynxとかも試しましたが、アクセスするたびにサーバからの反応が返されたりしてちょっと気持ち悪かったのでなんとかならないかなーと思ってたらwgetのことを思い出しました。
最近はunixコマンドから少し離れていたのでwgetのことなどすっかり忘れていました・・・。
でもwgetだとアクセスしたファイルをダウンロードしてしまうので、オプションとか調べたら「–spider」などというオプションがあって驚きました。
このオプションのおかげでごみファイルなども残すことなく自動化できるようになりました。
タグ:
cms,
concrete5,
coreserver,
Tips
concrete5にはユーザ項目を追加する機能があります。
ユーザ登録の時などに入力させ、ユーザ情報の一部として利用することができます。
ユーザ項目の追加は管理画面の「ユーザ・グループ管理」から「ユーザ項目」に入ると行うことができます。
![ユーザ項目の追加[concrete5] ユーザ項目の追加[concrete5]](http://blog.snufkins.net/wp-content/uploads/2009/07/2009-07-16_133153-300x138.png)
例えば “gender” というハンドルの項目を作った場合、その項目を扱うには次のようにするようです。
$u = new User;
$ui = UserInfo::getByID( $u->uID );
$gender = $ui->getUserGender();
ミソは
$ui->getUserGender();
で、
“getUser” + 取得したいハンドル
というように呼び出します。
ちなみに、
- getUserID()
- getUserName()
- getUserPassword()
- getUserEmail()
- getUserDateAdded()
- getUserStartDate()
- getUserEndDate()
- getUserInfoList()
はシステムによって予約済みのようですので、ハンドルには
- id
- name
- password
- email
- date_added
- start_date
- end_date
- info_list
などは使わない方が無難みたい。(使えなかったりややこしかったりするので)
参考
http://www.concrete5.org/help/building_with_concrete5/developers/mvc/scripting_common_concrete5_tasks
タグ:
cms,
concrete5,
Tips
/themes
に
/concrete/themes/core/concrete.php
をコピー。
つまり
/themes/core/concrete.php
ができあがる。
それをいじるとhtmlのヘッダやページ左上部のconcrete5のロゴ画像などを変更できる。
中身は
/concrete/single_pages/login.php
を
/single_pages
にコピーして編集。
タグ:
cms,
concrete5,
Tips
http://www.concrete5.org/help/building_with_concrete5/developers/understanding_blocks/understanding-and-building-blocks-in-concrete5
の超訳。かなりてきとー。しかも途中で飽きた。
——————————
ブロックについて
あなたのConcrete5サイトは「ブロック」
を使えば簡単に機能を拡張することができます。
【ブロックのディレクトリの中身】
■add.php
必須。
ブロックを追加するときに表示される。
自動的に<form>タグで囲まれ、「新規」(submit)ボタンをクリックするとこのブロックのcontrollerに送信される。
■edit.php
必須ではないが通常は必要と思われる。
ブロックの編集モードのときに表示される。
add.phpど同様に<form>タグで囲まれる。
■controller.php
必須。
このブロックに固有で重要なパラメータ(ブロックの名前や詳細、表示サイズなど)や必要なプログラムが書かれています。
ブロックのクラスはブロックの保存機能も受け持ちます。(データベースに正しくマッピングされてさえいれば、どんな風に保存するか指定するひつようもありませんが)
■db.xml
データベースへコンテンツの保存が必要なブロック(99%が該当するでしょう)には必須。
このファイルにはこのブロックが使うデータベースのテーブルを作成する構文がADO XMLSフォーマットで記述されています。
■auto.js
必須ではない。
このファイルが存在すれば、ブロックがaddまたはeditモードのときに読み込まれます。
■icon.png
必須ではない。
Concrete内でこのブロックが表示されるときに表示される画像。
■tools ディレクトリ
必須ではない。
このブロックで使われうるファイルを置きます。
AutoNavブロックはこの機能を使っています。
■templates/
必須ではない。
このディレクトリに置かれたファイルは、CMS全体を通してカスタムテンプレートとしてつかわれるようなビューになります。
例えば、典型的なautonavブロックはulを使ってコーディングしますが、”Header Menu”テンプレートはautonavブロックを使うことができ、divでコーディングされたメニューに置き換えます。
ブロックのインストール
インストールインフォメーション1
■controller.php 内のプロパティ
【必須プロパティ】
[btDescription]
そのブロックが持つ機能の簡単な説明。
ダッシュボードやブロック追加画面で表示されます。
[btName]
そのブロックの名前
【必須ではないプロパティ】
[btTable]
そのブロックのデータベーステーブル。明示され、ブロックがこのデータベーステーブルのみを使っているなら、このブロックは自らの情報をこのテーブルに保存します。その際、ブロックのフォームのフィールドはそのままデータベースのカラムになります。
[btInterfaceWidth]
ブロックが追加や編集される際に表示されるポップアップダイアログの幅。
[btInterfaceHeight]
ブロックが追加や編集される際に表示されるポップアップダイアログの高さ。
インストールインフォメーション2
■db.xml
タグ:
concrete5,
和訳,
開発
最近のコメント