2013年9月29日

MODX Evolution CMSサイトを引越し(サーバ移転)するには

MODxサイトの引越し(サーバ移転)に関する方法を紹介します。

MODX Evolution CMS

1. データのバックアップ

データベース

管理画面の「ツール」メニューから「バックアップ・リストア」にアクセスします。「Drop文を生成」、「テーブル名」をチェックします。ログをあえて残す必要がない場合には、「modx_event_log」と「modx_manager_log」の「データサイズ」欄のリンクをクリックしてクリアします。最後に「選択したテーブルをバックアップ・ダウンロード」の前の「ここをクリック」。

MySQLデータベースの照合順序が ujis_japanese_ci になっている場合、MODxのデータのバックアップを使うと文字化けすることがあります。その場合は、データベースからサーバのPhpMyAdminでローカルにsqlファイル(A)をエクスポートします。

データベース以外のデータ

FTPでサイト全体のデータ(B)をローカルにバックアップします。

2. 移転先サーバへのアップロード

Aのファイルを移転先サーバのPhpMyAdminでインポートします。また、BのデータをFTPで移転先サーバにアップロードします。

3. パーミッションの設定

下記のディレクトリを707に

  • assets/cache
  • assets/export
  • assets/flies
  • assets/flash
  • assets/images
  • assets/media

下記のディレクトリを606に

  • assets/cache/siteCache.idx.php
  • assets/cache/sitePublishing.idx.php

下記のディレクトリを404に

  • manager/includes/config.inc.php

それぞれ変更します。

4. config.inc.phpの書き換え

manager/includes/config.inc.php のデータベース関連の引数を書き換える必要があります。

  • $database_type = 'mysql'; → このまま
  • $database_server = 'xxxx.xxxx.xxx'; → 適宜変更(例:'localhost')
  • $database_user = 'xxxx'; → 適宜変更
  • $database_password = 'xxxx'; → 適宜変更
  • $database_connection_charset = 'utf8'; → このまま
  • $database_connection_method = 'SET CHARACTER SET'; → このまま
  • $dbase = '`xxxx`'; → `適宜変更`
  • $table_prefix = 'modx_'; → このまま

5. MODXのグローバル設定の変更

MODXの管理画面の「ツール」メニューの「グローバル設定」を開いて、次の設定を書き換えます。

  • ファイル管理の設定 - 対象ディレクトリの物理パス → 適宜変更(例:/virtual/xxxx/public_html/)
  • インターフェイスとその他の機能 → 適宜変更(例:/virtual/xxxx/public_html/assets/)

6. キャッシュのクリア

MODXは、画面表示を早めるために一度表示されたページのURLをサーバ上にキャッシュしておくようになっています。そのため、1?2の作業によって、MODxがキャッシュされた以前のドメインに遷移しようとする可能性があります。もし、このような状態になってしまったら、管理画面にログインして「メイン」の「キャッシュをクリア」を実行します。

2013年9月8日

MODX Evolution CMSのDittoスニペットでRSSフィードを自動生成

MODX標準搭載のDittoスニペットは、RSSフィードの自動生成も簡単です。Dittoスニペットで自動生成したRSSフィードから新着記事をTwitterに自動ツイートしたり、Facebookに自動投稿したりすることもできます。

RSSフィードの自動生成の設定例

たとえば、リソースID「9,28,33」配下のリソースの新着10件からRSSフィードを生成する場合は、以下のようにRSSフィード用のリソースを作成します。

1. リソースを作成し、下表のように設定します。

項目設定備考
タイトル サイト名  
説明(description) サイトの説明 通常のMETAタグのdescriptionに記述する内容
エイリアス rss.xml ファイル名。index.rdf、feed.xmlなどとしてもよいが、その場合、テンプレート内のRSSフィード指定も忘れずに。
テンプレート blank  
メニューに表示 無効 Wayfinder、Ditto、Breadcrumbsなどのスニペットに表示させないようにするときは、「無効」に。
内容 [!Ditto? &format=`rss` &parents=`9,28,33` &depth=`3` &display=`10` &orderBy=`pub_date DESC` &showInMenuOnly=`1`!] 各変数については、下記を参照。
ページ設定 「公開する」と「キャッシュをクリア」の2つだけをオン(その他はすべてオフ)  
コンテントタイプ application/rss+xml  

2. テンプレートの<head>?</head>内に下記のコードを挿入して、保存。

<link rel=”alternate” type=”application/rss+xml” title=”RSS 2.0” href=”[(site_url)]rss.xml” />

RSS生成用のDittoスニペットの変数について

  • format:出力形式。【必須】
  • parents:対象とする子ドキュメントが属する親ドキュメント。IDで指定。カンマで区切って複数指定可能。【必須】
  • depth:対象とする子ドキュメントの階層。「1」以上の整数で指定。デフォルトは、「1」。【必須】
  • display:表示するドキュメント数。デフォルトは、「3」。すべてのドキュメントを表示するには、「all」。上記の例は、「10件」。
  • language:ナビゲーションメッセージの言語。デフォルトは、「英語」。日本語にするには、「japanese-utf8」。【必須】
  • showInMenuOnly:メニューに表示している記事に限定するかどうか。デフォルトは、「0(限定しない)」。限定するには、「1」に。
  • orderBy:ソートのキーとするフィールドとソート順。デフォルトは、「createdon DESC(作成日時 降順)」。昇順にするには、「ASC」。上記の例は、「公開日」。 【必須】

2013年8月15日

MODX Evolution CMSのeFormスニペットで問い合わせフォームを作る

問い合わせフォームの作成手順は、次の通りです。
  1. 「問い合わせフォーム」チャンクの作成
  2. 「問い合わせ送信後のお礼画面」チャンクの作成
  3. 「お客様への自動返信メール」チャンクの作成
  4. 「自分への自動通知メール」チャンクの作成
  5. 「問い合わせ」リソースの作成
以前にMODX Evolution CMSで作ったサイトの問い合わせフォームのコードをそのまま以下に掲載します。このコードをコピーしてMODXのチャンクやリソースに貼り付けて、必要な箇所を修正してお使いいただけます。

注意

チャンクを誤ってスニペットに登録してしまうと、深刻なエラーを引き起こすことがあります。チャンクは単なるHTMLですが、スニペットはプログラムそのものです。くれぐれもご注意ください。

1. 問い合わせフォームのチャンク

チャンク名
例:contactForm フォームであることがわかるように
チャンクコード
<p>[+validationmessage+]</p>
<form action="[~[*id*]~]" method="post">
<input name="formid" type="hidden" value="feedbackForm" />
<table>
<tr>
<th>ご氏名<span style="color: red;">*</span></th>
<td>
<input maxlength="60" name="Name" type="text" eform="ご氏名:string:1" /></td>
</tr>
<tr>
<th>メールアドレス<span style="color: red;">*</span></th>
<td><input maxlength="40" name="email" size="40" type="text" eform="メールアドレス:string:1" /></td>
</tr>
<tr>
<th>お問い合わせ内容<span style="color: red;">*</span></th>
<td><textarea cols="40" rows="10" name="comments" eform="お問い合わせ内容:string:1" ></textarea></td>
</tr>
<tr>
<th>認証コード<span style="color: red;">*</span></th>
<td><img src="[+verimageurl+]" border="1" alt="verification code" align="right" />右記のコードを半角英数字でご記入ください。<br /><input name="vericode" size="20" type="text" /></td>
</tr>
<tr>
<th>※<span style="color: red;">*</span>印:入力必須項目</th><td>※確認画面を出さずに送信します。この画面で内容をお確かめください。
<input name="submit" type="submit" value="送信" /></td>
</tr>
</table>
</form>
[+validationmessage+]:入力洩れがあったときの警告文を表示します。




name="[項目ID]"項目ID半角英数字で設定します。他のチャンクやリソースで、その項目に記入された内容を呼び出す際に使います。メールアドレスのname変数だけは、必ずすべて小文字emailにします。
eform="[項目名]:string:1":必須項目の設定です。[項目名]は、入力洩れの警告文の中で「入力洩れのあった項目」を示すのに使われます。
続けて、「問い合わせ送信後のお礼画面」チャンク、「お客様への自動返信メール」チャンク、「自分への自動通知メール」チャンクを作成しましょう。
eFormスニペットで問い合わせフォームを作る手順の続きです。

2. お客様へのお礼画面のチャンク

チャンク名
例:contactThanks お礼画面であることがわかるように
チャンクコード
<p>[+Name+]様、お問い合わせいただきましてありがとうございます</p>
<p>下記の内容を事務局に送信しました。確認のため、ご登録いただいたメールアドレスに下記の内容をお送りしました。</p>
<table>
<tr>
<th>ご氏名:</th><td>[+Name+]様</td>
</tr>
<tr>
<th>メールアドレス:</th><td>[+email+]</td>
</tr>
<tr>
<th>お問い合わせ内容:</th><td>[+comments+]</td>
</tr>
</table>
<p>もしメールが届いていない場合は、メールアドレスに誤りがあるか、このお問い合わせフォームが正常に動作しなかった可能性があります。その場合は、お手数ですが、#####@#####.### 宛にお知らせください。</p>
[+Name+]:チャンク1のname="Name"で 指定した内容を引っ張ってきます。

3. お客様への自動返信メールのチャンク

チャンク名
例:contactReply 返信だとわかるように
チャンクコード
[+Name+] 様
お問い合わせいただきましてありがとうございます。
後ほど弊社担当者よりご連絡させていただきます。
----------------------------------------------------------------------
【お問い合わせ内容】
----------------------------------------------------------------------
ご氏名:[+Name+] 様
メールアドレス:[+email+]
お問い合わせの内容:[+comments+]
お問い合わせ日時:[+postdate+]
::**::**::**::**::**::**::**::**::**::
      署   名
::**::**::**::**::**::**::**::**::**::
このメールは自動返信機能により送信しています。
[+Name+]:チャンク1のname="Name"で 指定した内容を引っ張ってきます。

4. 自分宛ての自動通知メールのチャンク

チャンク名
例:contactReport 通知だとわかるように
チャンクコード
[+Name+]様からお問い合わせがありました。
----------------------------------------------------------------------
ご氏名:[+Name+]様
メールアドレス:[+email+]
お問い合わせ内容:[+comments+]
----------------------------------------------------------------------
お問い合わせ日時:[+postdate+]
----------------------------------------------------------------------
※このメールは自動返信機能により、送信しています。
[+Name+]:チャンク1のname="Name"で 指定した内容を引っ張ってきます。
最後に4つのチャンクを含めてeFormスニペットをコールするリソースを作成して完成です。

5. 問い合わせページのリソースにおけるeFormスニペットの使用例

問い合わせページのリソースに、eFormスニペットを呼び出し、上記4つのチャンクを読み込ませるコードの例です。
[!eForm? &formid=`feedbackForm` &autosender=`#####@##########.###` &autoSenderName=`######` &automessage=`contactReply` &from=`[+email+]` &fromname=`[+Name+]` &report=`contactReport` &sendAsText=`1` &subject=`お問い合わせありがとうございます` &to=`#####@##########.###` &tpl=`contactForm` &thankyou=`contactThanks` &vericode=`1`!] feedbackForm:チャンク1で指定したフォームID
contactReply:チャンク3
contactReport:チャンク4
contactForm:チャンク1
contactThanks:チャンク2
&以降のパラメータは、下表をご参照ください。上記のパラメータは、下表と参照しやすいようにアルファベット順に並んでいますが、順不同です。

eFormスニペットのパラメータ

変数解説必要度
formid 「問い合わせフォーム」チャンクの冒頭で設定したフォームのvalueを指定します。 必須
tpl 問い合わせフォームのチャンクを指定します。 必須
report 自分への自動通知メールのチャンクを指定します。 必須
automessage お客様への自動返信メールのチャンクを指定します。 任意
autosender お客様への自動返信メールの送信者メールアドレスを指定します。会社であれば、代表メールアドレス、担当部門メールアドレスなど。【automessageと併用】 任意
autoSenderName お客様への自動返信メールの差出人名を指定します。【automessageと併用】 任意
from 自分への自動通知メールの送信者メールアドレスを指定します。【reportと併用】 任意
fromname 自分への自動通知メールの差出人名を指定する変数です。【report,automessageと併用】 任意
sendAsText メール形式をテキスト形式に指定します。この変数を外すと、HTML形式になります。 任意
subject 「お客様への自動返信メール」と「自分への自動通知メール」の件名を指定します。【report,automessageと併用】
※MODx Evolution 1.0.5Jr3以前では件名に「(音引き)」を指定すると文字化けします。
任意
report 自分への自動通知メールのチャンクを指定します。【reportと併用】 任意
thankyou フォーム送信後のお礼画面のチャンクを指定します。 任意
vericode 認証コードの表示を指定します。 任意

2013年8月11日

MODX Evolution CMSのDittoスニペットでよく使うパラメータ

MODXのメニュー自動生成に便利なDittoスニペットでよく使うパラメータをまとめます。
パラメータ説明使用頻度
&tpl 出力用のテンプレートとなるチャンク。予めチャンクを作っておき、そのチャンク名を指定。上記の例は、「Articles」。 【必須】
&parents 対象とする子ドキュメントが属する親ドキュメント。IDで指定。カンマで区切って複数指定可能。 【必須】
&depth 対象とする子ドキュメントの階層。「1」以上の整数で指定。デフォルトは、「1」。すべての階層を対象としたい場合は、「0」。 ★☆☆
&dateFormat プレイスホルダ[+date+]の表示形式。日付の書式は、PHPマニュアルのページをご参照ください。 ★☆☆
&dateSource プレイスホルダ[+date+]の日付のソース。よく使う設定として、createdon(作成日)、 publishedon(公開日)、 editedon(更新日)があります。 ★☆☆
&display 表示するドキュメント数。デフォルトは、「3」。すべてのドキュメントを表示するには、「all」。 ★★★
&id paginate変数でページ分割指定した場合の分割表示用プレイスホルダ名。paginate変数使用時のみ使用。 ★☆☆
&paginate ページ分割指定。デフォルトは、`0`(しない)。分割する場合は、`1。`分割指定した場合、&displayで指定した値で分割。分割指定した場 合、同一のドキュメント内に分割表示用のプレイスホルダが必要。 ★☆☆
&showInMenuOnly 「メニューに表示」を有効にしたリソースのみ表示する機能。デフォルトは、`0`(無効)。有効にする場合は、`1`。特定のページを新着表示やRSS表示に含めたくないときどこからもリンクさせたくないページを作りたいときにかなり重宝するお薦めパラメータ。 ★★★
&orderBy ソートのキーとするフィールドとソート順。デフォルトは、`createdon DESC`(作成日 降順)。ソート対象フィールドについて詳しくは、パラメータ一覧へ。ソート順を昇順にするには、"ASC"に。 ★☆☆