2010年5月29日土曜日

上級権限モード解説ページへのリンクメモ。

concrete5で、あるページの編集権限などを細かく設定し分けるための「上級権限モード」についての解説ページが、日本公式サイトにあります。

http://concrete5-japan.org/help/new_help_pages/advanced_permission/

良く勉強する必要があるので、リンクメモをはっておきます。

シングルページの変更方法

エラー表示ページなどの「シングルページ」を変更したい場合の方法が、
concrete5日本公式サイトに書かれています。
実装の必要があるので、リンクメモをしておきます。

http://concrete5-japan.org/help/design/customize-single-pages/

ありがたや。。

アップロードファイルをファイルマネージャーで。

concrete5で、FTPにてアップロードしたファイルをファイルマネージャーで管理するには、
/files/incoming/
というディレクトリ(フォルダ)をつくって、
書き込み権限を与えるといいのですね。


http://concrete5-japan.org/community/forums/chat/post-607/
に詳細が書かれています。

便利。

concrete5のレスポンスアップ

concrete5の管理画面トップに、過去数日の閲覧件数がflashで表示されていますが、
この表示を切ると、レスポンスが早くなり幸せになれます。

concrete5日本のフォーラムにやり方が書いてあります。
http://concrete5-japan.org/community/forums/chat/post-461/

要約すると、
1、/config/site.phpの中に
define('STATISTICS_TRACK_PAGE_VIEWS', false);
を追加して、新しく定数を定義。

2、
/concrete/elements/dashboard/modules/reports.php
を、トップディレクトリにある
/elements/ディレクトリ配下に、
dashborad/modules/reports.php
というように、階層的にディレクトリをつくって、最後にreports.phpファイルを作り、
中身に、

<?php defined('C5_EXECUTE') or die(_("Access Denied.")); ?>
<div id="dashboard-reports" style="width:330px;height:280px;">
<p>アクセス解析を中止</p></div>

といったように、不正アクセスブロックコードと、必要があればメッセージを記入して、保存。

3、そしてMySQL内の「PageStatistics」というテーブルをバックアップし、必要なければ削除。

でOKです。

お決まりですが、 適用は自己責任で。

やってみたら、体感できるぐらいスピードアップしてくれて、幸せです。

2010年5月10日月曜日

concrete5上に同一サーバ内別DBデータ表示を表示。(覚え書き)

concrete5上に、同一サーバ内の別DBからデータをselectして表示させる必要があり、色々試行錯誤が必要だったのでメモです。

1、まず、無料のPHPブロックを使って、普通にMySQL関数で外部DBを読み込ませるとすぐOKになり、一見完璧だったのですが、ページのリロードなどをすると、ADOdbに関するエラーが出て、アウトでした。

2、そこで、本家ドキュメントを見に行き、
http://www.concrete5.org/documentation/developers/system/database-connectivity
にADOdbを使って他のDBにアクセスする方法の概要が出ていたので、コードの変更を行うことにしました。

$db = Loader::db( 'newserver', 'newuser', 'newpassword', 'newdatabase', true);
という感じで、外部DBにアクセス。
$rows=$db->Execute('select * from TestTable');
で実行&格納。

3、http://adodb.sourceforge.net/
にADODBの記述法が書いてあったので、参考にしながら色々やってみました。
 途中、whileの書き方が良くなかったらしく、無限ループに入ってまいりました。。
 PHPブロックのデータが入ったbtNdPhpBlockContentというテーブルに、記述したコードがあったので、そちらを削除して回避しました。。

4、最終的に以下のような感じで、目的のデータを表示できました。
foreach ($rows as $row) {
printf("<p>■「%s」(%s):%s</p> ",$row['title'],$row['date'],$row['content']);
}
5、以下のコードを挿入すると元のDBにアクセスし直す、ということだったので、挿入。(これを入れないと、自分の経験ではループに入ってしまう感じです。。)
// return to the original db session
$db = Loader::db(null, null, null, null, true);
 
 これでlocalサーバ内の別DBからのデータもconcrete5上で表示させることができ、エラーも出なくなって、目的が達成されました。