マネージャへのアクセス許可
MODxはユーザー※1ごとに各ドキュメントへのアクセスパーミション※2を設定できます。
※1:ここでのユーザーとは、管理画面へのアクセス権を持つユーザーを表します。MODxはその他に、管理画面にアクセスできないウェブユーザーがあります。
※2:管理画面から各ドキュメントへのアクセス権です。
アクセスパーミションは管理画面→ユーザー→マネージャへのアクセス許可で設定します。マネージャへのアクセス許可には次のタブがあります。
- ユーザグループ
ここで作成したユーザグループを各ユーザーに割り当てることによりユーザーにアクセスパーミションを設定します。 - ドキュメントグループ
ここで作成したドキュメントグループを各ドキュメントで選ぶことでドキュメントをドキュメントグループに結び付けます。 - ユーザ/ドキュメントグループ リンク
ドキュメントグループをユーザーグループへ割り当てます。
「ユーザー」ユーザー作成の流れ
当記事では、MODxの管理画面(MODxマネージャー)にアクセスできるユーザーを単にユーザーと呼びます※1。
※1:MODxにはその他にウェブユーザーがあります。
- (1)ユーザー権限の作成(管理画面→ユーザー→権限管理)
ユーザー権限はユーザーができる処理(ドキュメントの作成,更新,削除)などを規定します。 - (2)ユーザー権限の割り当て(管理画面→ユーザー→権限管理)
「権限管理」画面のユーザーの作成から新規のユーザーを作成します。作成したユーザーに対して(1)で作成したユーザー権限を割り当てます。
ユーザーにはユーザー権限に加えアクセスパーミッションを設定することができます。アクセスパーミッションでは個別ドキュメントへのアクセス権を表します。
- (3)「マネージャへのアクセス許可」で規定したアクセスパーミッションを作成します。
- (4)作成したアクセスパーミションをユーザーに割り当てます。
- テーマ:ホームページ・ブログ制作
- ジャンル:コンピュータ
ユーザー管理
MODxは大きく管理画面(MODxマネージャー)にアクセス可能な「ユーザー」ユーザーとアクセスできない「ウェブユーザー」ユーザーに分けることができます。
- 「ユーザー」ユーザー
- 管理画面(MODxマネージャー)にアクセス可能なユーザーです。
- 「ウェブユーザー」ユーザー
- 管理画面(MODxマネージャー)にアクセスできないユーザーです。
スニペットの引数
スニペットコールの引数はスニペット内で同名の変数として利用できる。
デフォルトテンプレートの変更
「全てのドキュメントが既定のテンプレートを使用するようにリセットする」オプションを選択して、デフォルトテンプレートを変更したところレイアウトが崩れ、Javascriptのエラーが発生するようになりました。
DBを復元して対処しました。バックアップの重要性を感じる出来事でした。
スニペットを使うときのケアレスミス
はじめてスニペットを使いましたが、ページの設定でキャッシュ可をオフにするのを忘れるました。今後のための備忘録として記しておきます。
エクスポートができない
MODxではドキュメントを静的ページとしてエクスポートする機能がありあす([ツール] → [サイトのエクスポート] -MODx 0.9.6-)。私の環境ではうまくエクスポートができませんでした。
Warning: fopen(): SAFE MODE Restriction in effect. The script whose uid is *** is not allowed to access /***/assets/export/templates owned by uid ** in /***/manager/actions/export_site.static.php on line 126
Warning: fopen(ファイルパス): failed to open stream:文字化け in /***/manager/actions/export_site.static.php on line 126
失敗! Cannot open file (ファイルパス)
下記のサイトを参考にさせていただき、色々と試しましたが、思うようにいきませんでした。とりあえずの対処法の備忘録です。
»LULU-LOG_T るるろぐ てくにかる。: MODxでサイトのエクスポートに失敗する
»MAMPでMODxのエクスポートが失敗する
エクスポートした際の現象 ⇒ フォルダは作成される(755)。ファイルは作成されない。
対処 ⇒ ローカルでファイルを作成 → アップロード
MODxのインストール -PART2- インストール後の処理
MODxをインストールした後の処理の備忘録です。
- installディレクトリを削除
- config.inc.phpのパーミションを644へ
- MODx管理画面の日本語化
- PHPのregister_globalsをオフ
MODx管理画面の日本語化
MODx管理画面の日本語化は下記のサイトでとても分かり易く解説がされています。
»1km.info | MODxのインストール
PHPのregister_globalsをオフ
PHPのregister_globalsをオフにするには通常次の方法があります。
- htaccessファイルで設定
- php.iniで設定
今回はhtaccessに設定しました。解凍したディレクトリにあるht.accessを開き#php_flag register_globals Offの先頭にある#を削除します。ht.accessをアップロードしてリネイムします。
参考サイト
»1km.info | MODxのインストール
MODxのインストール -PART1- ダウンロードからインストール
MODxはオープンソースのCMSです。本記事はMODxをインストールした経験を備忘録としてまとめています。
»MODx Content Management System | Home
ダウンロードからインストールまで
MODxのインストールは下記のサイトでとても分かり易く解説がされています。
»1km.info | MODxのインストール
サイトに書かれている通り進みインストールが完了しました。その際に個人的に躓いた点等をまとめます。
空のZIPファイル
セキュリティソフトの関係で空のZIPファイルがダウンロードされました。セキュリティソフトをオフにすることで正常にダウンロードできました(Norton Internet Security 2006)。
config.inc.php
パーミッションは1km.infoに詳しく書かれておりその通り設定すればインストールできます。個人的には単純なケアレスミスですがconfig.inc.phpを作成するのを忘れ少し悩みました。
アップロードしたmanager/includes/config.inc.php.blankをconfig.inc.phpにリネームしてパーミションを777へ
テーブルのprefixのバグ
`modx_`というprefixは使用していませんが、下記のようなエラーが発生して先へ進めませんでした。
Checking table prefix `modx_`: Failed! - Table prefix is already in use in this database!
下記のサイトを参考に対処しました。
»0.9.6 install error: Checking table prefix `modx_`: Failed! - Table prefix is al
要点はinstall/action.summary.phpの152行目にある条件分の==を=へ修正します。下記は上記のサイトから引用しています。
ok, I've found the reason for the error: In the file "install/action.summary.php" is a bug:
Line 152
if (@ $rs == mysql_query("SELECT COUNT(*) FROM $dbase.`" . $table_prefix . "site_content`")) {
should be
if (@ $rs = mysql_query("SELECT COUNT(*) FROM $dbase.`" . $table_prefix . "site_content`")) {
PS: The CMS runs with mySQL 3.23.58, too.
以上がインストールまでで躓いた点です。
参考サイト
»MODx Content Management System | Home
»1km.info | MODxのインストール
»0.9.6 install error: Checking table prefix `modx_`: Failed! - Table prefix is al
Ajax Simple Report Bar -PART5-
report.jsはサーバ側プログラムとの通信、および結果表示を担うJavascriptプログラムです。本記事ではreport.jsを詳細に見ていきます。
{
var r = r; // r 報告->1,ロード->0
var i = i; // 識別番号
//var i = (i ? i : $F('i'));
var url = 'report.php';
var pars = 'r=' + r + '&i=' + i;
var myAjax = new Ajax.Request(
url,
{
method: 'get',
parameters: pars,
onLoading : function(req)
{
var m = 'Waiting...';
$('d').innerHTML = m
},
onSuccess: successReport,
onFailure: function(req)
{
var m = 'Sorry...';
$('d').innerHTML = m;
}
});
}
function successReport(req)
{
// JSONデータ受取
var jsontext = req.responseText;
// JSON -> Javascriptオブジェクト
var result = eval('(' + jsontext + ')');
// 報告ボタン切替
var ip_check = result['ip_check'];
if(ip_check)
{
$('r').style.display ='none';
$('nr').style.display='inline';
}
else {
$('r').style.display ='inline';
$('nr').style.display='none';
}
// 報告数設定
if(result['total_report'] != '0')
{
$('d').innerHTML = result['total_report'];
$('d').style.backgroundColor = '#C9D787';
// グラフの幅
var bar = result['total_report'];
bar *= 2;
// グラフ幅設定
$('d').style.width = bar + 'px';
}
else
{
$('d').innerHTML = '報告はありません。';
$('d').style.backgroundColor = '#FFFFFF';
}
}
window.onload = function()
{
linkReport(0,$('i').value);
}
function execReport()
{
linkReport(1,$('i').value);
}
linkReport関数
report.jsのメイン関数です。サーバ側プログラムとの通信、および結果表示を担います。第1引数はロードか報告かの判定フラグ、第2引数で識別番号です。
- index.htmlがロード・・・window.onload → linkReport(0,識別番号)で呼び出されます。
- 報告ボタンがクリック・・・execReport → linkReport(1,識別番号)で呼び出されます。
識別番号は$('i').valueで取得します。$('ID名')はprototype.jsによりID名のついたHTML要素を参照します。
Ajax Simple Report Bar -PART4-
Ajax Simple Report Barのindex.phpを詳しく解説しています。
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="content-script-type" content="text/javascript" />
<title>Ajax Report Bar</title>
<link rel="stylesheet" href="css/report.css" type="text/css" media="all" />
<script language="JavaScript" type="Text/JavaScript" src="prototype.js" charset="utf-8"></script>
<script language="JavaScript" type="Text/JavaScript" src="report.js" charset="utf-8"></script>
</head>
<body>
<h1>Ajax Simple Report Bar</h1>
<p>報告ボタンをクリックすると報告数が棒グラフとして表示されます。IPを使い重複チェックをしています。</p>
<form>
<input type="hidden" name="i" id="i" value="数字" /><!-- [1] -->
<input type="image" src="images/report.gif" id="r" onclick="execReport();" /><!-- [2] -->
<img src="images/reported.gif" id="nr" /><!-- [3] -->
</form>
<p id="d" ></p><!-- [4] -->
</body>
</html>
- [1]・・・報告プログラムの識別番号です。DBの主キーの値になります。
- [2]・・・未報告の際に表示される画像ボタンです。クリックすると報告数を1増やす一連の処理を行います。
- [3]・・・報告済の際に表示される画像です。
- [4]・・・報告数とグラフを表示します。グラフはp要素にCSSで背景色(background-color),幅(width)を設定して実現します。
- HTMLファイルをロードした際の動き
-
- 初回・・・ DBレコード(基本情報)追加 ⇒ 報告数(0)の取得 ⇒ 報告数(0)をグラフ表示
- 2回目以降・・・ 報告数の取得 ⇒ 報告数をグラフ表示
- 報告ボタンを押した際の動き
- 既存の報告数を1増やす(DB登録) ⇒ 報告数の取得 ⇒ 報告数をグラフ表示
- HTMLファイルをロードした際の動き
-
- 初回・・・ 初回・・・ DBレコード(基本情報)追加 ⇒ 報告数(0)の取得 ⇒ 報告数(0)をグラフ表示
- 2回目以降
- 未報告・・・報告数の取得 ⇒ 報告ボタン,報告グラフを表示
- 報告済・・・報告数の取得 ⇒ 報告済画像※1,報告グラフを表示
- 報告ボタンを押した際の動き
- 既存の報告数を1増やす(DB登録) ⇒ 報告数の取得 ⇒ 報告済画像※1,報告グラフを表示
Track Word
Track Wordは参照元のキーワードを集計するサービスです。登録が簡単で、デザインもとてもシンプルなため使い勝手がよいサービスです。
Ajax Simple Report Bar -PART3-
PART1,2に続き本記事ではAjax Simple Report Barの詳しい動作をまとめています。
動作1(IPチェックなし)
動作(IPチェックあり)
報告済みの判定はIPアドレスで行います。
※1既に報告済みのIPの場合は、報告ボタンに変えて報告済み画像を表示することで重複報告を防止します。
Ajax Simple Report Bar -PART2-
Ajax Simple Report BarはAjaxを利用したシンプルな報告システムです。PART1はAjax Simple Report Barの概要を書きましたが、PART2ではファイル構成をまとめています。
ファイル構成
Ajax Simple Report Barは大きくわけるとカスタムファイルと配布されているライブラリを利用します。
カスタムファイル
ファイル名 | 形式 | 備考 |
---|---|---|
index.html | HTMLファイル | 報告送信フォーム |
report.js | Javascriptファイル | Ajax(通信,表示) |
report.php | PHPファイル | サーバ側DB処理 |
css/report.css | スタイルシート | スタイルシート |
images/report.gif | 画像ファイル | 報告ボタン画像 |
reported.gif | 画像ファイル | 報告画像 |
ライブラリ
ファイル名 | 機能 | 備考 |
---|---|---|
prototype.js | Javascriptファイル | Ajaxライブラリ |
JSON.php | PHP PEARライブラリ | JSON用ライブラリ※1 |
JSONをPHPで利用するを参考にしてください。
関連記事
»Ajax Simple Report Bar -PART1-
»Ajax Simple Report Bar -PART2-
»Ajax Simple Report Bar -PART3-
JSONをPHPで利用する
JSONはデータ記述言語です。Javascriptのオブジェクト・リテラルと同じフォーマットなのでJavascriptでの処理がシンプルに行えます。
PHPでJSONを利用する方法はいくつかありますが、PEARライブラリとして配布されているServices_JSONをご紹介します。
»Services_JSON
Services_JSON
Services_JSONは、他のライブラリと依存関係がなく独立して利用できます。JSON.phpをPHPファイルから呼び出せば利用できます。
参考記事
»Do You PHP? - PHPでJSON
»ITmedia エンタープライズ:Ajaxの真価はWebサービス連携にあり (1/4)
Ajax Simple Report Bar -PART1-
Ajaxを身に付ける目的でシンプルな報告システム(Ajax Simple Report Bar)を作成していこうと思います。本カテゴリーAjax Simple Report Barは作成過程を健忘録としてまとめています。
Ajax Simple Report Bar
報告ボタンがクリックされるとページ遷移をせずにリアルタイムで棒グラフの値,数値が増加します。重複防止をIPをもとにチェックします。
10
関連記事
»Ajax Simple Report Bar -PART1-
»Ajax Simple Report Bar -PART2-
»Ajax Simple Report Bar -PART3-
RSS作成サービス 【無料】
RSSは便利なサービスですが,RSSに対応していないサイトも多くあります。RSS未対応のサイトからRSSを自動作成するサービスをご紹介します。
どちらもRSSを作成したいサイトのアドレスを入力するだけのとても分かりやすいシンプルな機能です。
Ajaxを用いた星評価システム Unobtrusive AJAX Star Rating Bar
Ajaxを用いた星型評価システムをご紹介します。このスクリプトはMySQLを利用します。
»
ajaxstarrater_v122.zip
詳しい設置方法は下記のサイトでとても詳しく解説されています。
»Ajaxによる投票をやってみる - MovableType備忘録
本ブログはWordPressの個別記事(シングルポスト:single.php)にUnobtrusive AJAX Star Rating Barを設置する方法をご紹介します。
ダウンロードしたスクリプトを解凍。DB設定など必要な変更を行い、WordPressテーマディレクトリ※1へアップロード。
※1:thema/○○○ → ○○○は個別のテーマディレクトリ。
WordPressの各記事(single.php)に投票コードを挿入しましたが、正常に動作しないためrating.jsファイルの65行目付近を変更。 xmlhttp.open('get', 'rpc.php?j='+vote+'&q='+id_num+'&t='+ip_num+'&c='+units);
rpc.php?・・・ ⇒ /○○○/rpc.php?・・・※1
※1:/○○○/rpc.phpはルート(/)からの絶対パス指定へ