4 26

早速、バージョンアップしちゃいました。

BugFixとMODxモデのにっくさんからリクエストを頂きまして、そのリクエストに部分的に対処してみた機能を盛り込んでみました。

その機能というのは、エクスポートのHTMLファイルを格納するディレクトリを任意に指定できるというものです。MODxオリジナルのエクスポートも前回のバージョンもそうですが、固定ディレクトリassets/exportに出力していました。
これをExportDXの画面で任意に指定できるようにしたのが今回のバージョンです。
ついでに、ホスト名もフォーム入力にて変更することも可能にしてみました。

そんな今回の画面イメージは、↓な感じです。


 exdx_path

なお、ダウンロードはいつものところからExportDXを探してみてください。

投稿者 ZeRo

このエントリに定義されたタグ: ,
4 19

MODxのモジュール版のサイトエクスポート機能をそれとなく公開してみました。

以前、公開したのはプラグイン版のExportEXプラグインで、これはMODxの元々のエクスポート機能を利用してプラグインを追加することによりBASEタグや内部リンクなどに利用するホスト名を任意のものにしちゃうプラグインでした。

今回の機能も実は目的は同じですが、MODxの本来のエクスポート機能を使うのではなくてそれ自体をモジュールとして提供するものです。
なので、今回はEXぢゃなくてデラックスのDXです。
実際には、モジュールとプラグインの2つが入ってます。

さて、特徴ですが、今回は基本的な仕様はMODx本体のエクスポートとほぼ同じです。
画面周りもまったく同じロジックを利用しています。
但し、1点違うのはオリジナルではfopenでエクスポートするページを開いているのですが、これだとallow_url_fopenがFalseになっている環境ではエクスポートできません。(実際に、エクスポートを使う場合は内部利用が前提になるとすれば許可してもいい環境の方が多いかもですが)
そこで、MODxの配布物の中にはソケットを利用したHTTPクライアントライブラリであるSnoopyがあるのでこれを利用する方式に変更しました。

"MODx サイトエクスポートモジュール「ExportDX」をリリース" の続きを読む...

投稿者 ZeRo

このエントリに定義されたタグ: , , ,
1 4

2009年初投稿です。
明けましておめでとうございます。
たまに当ブログをチェックしてくださっている少数の方々、いつもご覧頂きましてありがとうございます。
ついでに滅多に更新しなくて申し訳ありません、本年は少しでもマメに更新できるように頑張りますぅ(といいつつ、4日経ってますけど)
さて、本日1月4日は私の誕生日であります。(拍手)

ということで、誕生日記念ということで本プラグインを発表!します。
すでに昨年秋ぐらいに一度作ってはいたんですが、0.9.3のリリースと共に再度ソースの見直しや最新版での確認とかも含めて再度作り直してみました。
ソース自体はとても短いので、当記事にそのまま貼り付けます。

エクスポート改造プラグインは、MODxを静的HTML吐き出しツールとしてプライベート(イントラとかローカルな自分のPC)に構築したMODxをグローバルサイトにHTMLをアップする際にちょっと面倒な部分をなんとかしてくれるっていうプラグインです。

ちょっと面倒な部分っていうのは、ホスト名周り。
いわゆるMODxのテンプレートでは、base hrefタグでリソースを相対パスで指定できるようになっているのが標準的な使い方ですが、このbaseタグのバリューはプライベートでアクセスした際のホスト名が入っちゃうわけです。
XAMPPで自PC上とかであれば、hostsに追記して実際のアップロードしたいホスト名と同じ名前でエクスポートをさせれば問題はないのですが、それも面倒だったり、実は/modxというフォルダ上に作ったものだけど、アップしたいグローバルサイト上ではルート/アクセスさせたいとかそんなときにこのプラグインがお役に立つ場面なのです。
要するに、base urlを任意に設定しちゃえるプラグイン っていうのがこのプラグインのメインの仕事です。

"MODxを静的HTML吐き出しツールとして活用する為のエクスポート改造プラグイン" の続きを読む...

投稿者 ZeRo

このエントリに定義されたタグ: ,
8 12

ひさびさにMODxの本家フォーラムのスニペット系の板を覗いてみた。

なんか、結構書き込みが多いような気がするのは久々に覗いたから?? なのか、そもそも元から盛り上がっていたのか定かではないんだけど。

きっと、RevoとEvoのアナウンスとか新しいロゴの発表とかきっと引き金になったに違いない。

-----さて、タイトルの話。 覗いたフォーラムにここ1ヶ月の間にpiexとSendPingとTrackbackの質問が出てた。

piexは、とりあえずむちゃくちゃな英語で返してなんとか読み取ってもらえたらしい。

SendPingとTrackbackについては、tkfmさんのフォローで無事英語圏へどちらも伝わった模様。

そのスレッドがココなんだけど、なにやらあとxmlrpcサポートできて、それっぽく体裁整えればMTやWPみたいなレベルになるじゃんってカキコが(超意訳だけどそういう感じだよね?)。

XMLRPCでブログツールから投稿できればいいなぁって1年半前ぐらいには思ったりもしたんですけど、そのときはメンドクサクなってやめちゃいました。 マジメに考えると結構なボリュームなんですよねぇ、MTのAPIとかBloggerAPIとかサポートしようとすると。

 

"MODx SendPingはバージョンアップするべきか?" の続きを読む...

投稿者 ZeRo

このエントリに定義されたタグ: , , , ,
8 7

Googleの新しいサービスGoogle Insights for Searchを使ってMODxキーワードの日本国内における動向を探ってみた。

 

2007年12月がピークでだんだんと検索数が下がっているんだけど・・・メジャーになったってことかなぁ???

V字回復を期待しましょ、EvoとRevoで♪

 

modx-insights

投稿者 ZeRo

このエントリに定義されたタグ: , ,
6 9

pieX Ver0.7をリリースしました。
変更点は以下の通りです。

  • 旧テンプレートの3つのパート分けから1つのテンプレートに変更
  • no itemのテンプレート名称をerrorに変更
  • 不要となったオブジェクトを破棄するように修正(流儀に従って)

記事テンプレートが変更になりましたので、旧版をお使いの方は注意が必要です。

"pieX Ver0.7リリース" の続きを読む...

投稿者 ZeRo

このエントリに定義されたタグ: ,
3 16

ということで、SEOに適したUrlを吐き出してくれるプラグイン「SEO Strict URLs」(詳細は、こちら を参照)があるんですが、現在作業中のサイトが旧URLから新URL(ホスト変わるので)に変わるので、軽めな対応で済ませたいという思いでプラグインを利用せずにコアをちょっぴり修正してフォルダの場合のURLをそれっぽいURLで吐き出すようにしてみました。

例えば、下記のようなドキュメント構造になっていた場合

/FolderA

|--- DocumentA1

|--- DocumentA2

/DocumentB

 

サフィックスが.htmlと付いていた場合に、

FolderAへのアクセス時には、FolderA.htmlに

DocumentA1へのアクセス時には、FolderA/DocumentA1.html とMODxがAliasを作ってくれます。

サフィックスがない場合は、前者がFolderA、後者がFolderA/DocumentA1となります。

で、FolderAへのアクセス時は、FolderA/と後ろに/を付けた形式でURLを吐き出しもらうようにしたいわけです。
サフィックスがある場合だとFolderAとFolderA.htmlとこの時点でちょっとなぁってことなので、SEO Urlsではサフィックスの有無に関係なくFolderAにはFolderA/でアクセスでき

ということで、SEO Strict Urlsプラグインの基本的なURL生成部分をコア修正で補うパッチになります。
但し、条件としてサフィックスなしでユーザがリーフ(末端のドキュメントである)を認識して自分でエイリアス名に拡張子を含めたものを設定する必要があります、もちろん、フォルダとしての扱いの場合は拡張子は付けちゃなりません。
というのは、コアの修正に際してはこの拡張子(というかピリオド)があるかないかで、/を付けるか付けないかを決めているわけです。
サフィックス付きだと、もうちょっと面倒なことをしなければならないので・・・そこまでするならSEO strict Urlsプラグインを使った方がよいのです。

もちろん、URL生成部分に修正を加えるだけなので、FolderAでアクセスされた場合にFolderA/にリダイレクトしてくれることはしません。

なので、すでに構築済みの場合はSEO Strict Urlsプラグインを導入することをオススメします。
もちろん、過去のことは忘れて心機一転という方はコア修正で済ませてもOKです。

"MODx Folderアクセス時に/を付ける小技" の続きを読む...

投稿者 ZeRo

このエントリに定義されたタグ:
1 28

pieX(Simplepie For MODx)及びNP_Simplepie(Simplepie For NucleusCMS)をお使いの方へ

Simplepieが1.1にバージョンアップされていますのでお知らせです。

一応、pieXの方でバージョンアップしたものと入れ替えて動作確認をしました。(多分、NP_Simplepieも問題ないはず)

ということで、すでにお使いの皆様もバージョンアップしてみてください。

ダウンロード先は、こちらからどうぞ♪

投稿者 ZeRo

このエントリに定義されたタグ: , , ,
11 3

当サイトで以前右側サイドバー部分に掲載しておりました、CMS AWORDS 2007の決戦投票の結果が11月1日に発表になりました。
遅ればせながら報告しますと・・・。
なんと、MODx もっとも期待できるオープンソースCMS部門で受賞しましたぁぁ(^^/

これでさらに知名度がアップすることでしょう・・・0.9.7への期待も高まります!

すでにSVNで0.9.7をダウンロードはできるようなのですが、あいにく私はまだダウンロードさせしておりません。
時間も取れないので・・・ちょっとどんな風に変わってるのかわかりませんが、結構コアもさらに柔軟な設計になっているようなのでますますMODxをベースにしたいろんなサイトが構築しやすくなるんじゃないかと期待して正式版が待ち遠しい今日この頃です。

来年はMODxブームが巻き起こることを期待しつつ、軽めのご報告をば。

PS.マイコミジャーナルにMODxの記事がタイムリーに出てましたわ

投稿者 ZeRo

このエントリに定義されたタグ:
9 11
PackPubのMost Promising OpenSource CMSの最終選考に残りましたぁ!!
今年こそはの意気込みが通じたようです♪

ということで、最終投票のステージ開催中ですので、MODxフリーク?なみなさん投票しちゃいましょう!
右のバナーをクリックすると投票サイトに繋がります!

英語よくわからんですが・・・・先ほど投票してきましたぁ。

投稿者 ZeRo

このエントリに定義されたタグ:
8 27

UPDATE 2008/06/10
Ver0.7をリリースしました、テンプレート周りが変更になっています。
詳細は こちら です。

 
Simplepie For MODx 略称pieXの最新版をリリースしました。
とりあえず、βテスト扱いということで・・・。
基本的には、NucleusのNP_Simplepieとほぼ同等の機能になります。
ということで、以前のv0.4及び英語版のv0.5とはパラメタ類が変更になっていますのでご注意ください。

当面の間、テストということでMODxフォーラムへは後日・・・・。
詳細は、下記(続き)にて♪
 

"pieX Ver0.6 " の続きを読む...

投稿者 ZeRo

このエントリに定義されたタグ: , ,
7 23
PHP5環境へそろそろ移行しようかと思い、XREA内のサーバ移転を計画中っす。
すでにPHP5サーバを取得して、移転できるかの検証中だったりしますが・・・意外と面倒っす。
MySQLも5の環境で、SQLのデータをそのままストアするとエラーが・・・INDEX KEYとVARCHARの問題で、そのままではいかないようです。
それじゃ・・っていうことで、SerendipityはPostgreSQLにも対応しているので、そっちにしちゃえとPostgreSQLのデータベース作成。
素のSerendipityでまずはPostgreSQLでインストール。
そこまではよかったんですが、利用しているプラグイン類の専用テーブルとかがあったりして・・・。
んーー、どちらにしろ面倒・・・もうちょっと頑張ってみてPostgreSQLで動いたらよいんだけど、駄目ならMySQL5でいきますだ。
それと・・・PHP5.2になるので要注意みたいな感じです。

いずれにしても、無料サーバのディスク容量が足りなくて、1ヶ月分のPlusを申し込んで移転作業になる予定。
8月いっぱい2つのサーバを借りて移転するので、たまにこけてたり・・・消えてたり?笑するかも知れません。

※ 7/24 とりあえず、www.petit-power.comのみ移転完了しました。

あ、あと告知ですぅ

2007 Open Source CMS Awardが始まりました。
前年度は、MODxノミネートされませんでしたが、今年こそは! ノミネート!っす

詳しくは、http://modxcms.com/forums/index.php/topic,16656.msg103690/boardseen.html#new をご覧ください。

投稿者 ZeRo

このエントリに定義されたタグ:
5 25

SJIS TIPSの流れから引き続き、関連のTIPSです。
といっても、テンプレートを変更するプラグインでTemplateSwitcherっていうプラグインがあるんですが・・・基本はこれと同じなわけです。
条件をUAによって振り分けれれば、SJISプラグインと合わせることによりページング処理を除いて携帯対応ってことになりますね。
今回使用するイベントは、OnLoadWebDocumentっていうイベントです。
このイベントが発生したときには、実は$modx->documentContentという変数には使用するテンプレートが展開されて入ってきてます。
このあとに、中身をパースしてドキュメントの中身を指示に従って入れ込んだり、スニペットを呼び出したと実際のページ作成の処理に入っていきます。
なので、このイベントでテンプレートの中身を入れ替える必要がでてくるわけです。

以下のコードは、以前携帯対応をしたときの抜粋&若干の手直しバージョンです。
携帯か?の判断文はありませんが、判断を入れれば、携帯のときのみにテンプレートを入れ替えるということが可能になります。
単純な携帯判定であれば、

if (preg_match("#docomo|softbank|vodafone|kddi#i",$_SERVER["HTTP_USER_AGENT"])
{
   ここにテンプレート切り替えロジックを入れる

みたいな感じになるでしょうか?
PearのNet_UserAgent_Mobileを利用して、判定ロジックはそちらに委ねるのもよいかと思います。
0.9.6でもこの部分の内部ロジックに変更はなかったので、多分いけるはずですが、実際に利用していた時期は0.9.2.1の頃です。

  1. switch ($e->event)
  2. {
  3. case "OnLoadWebDocument":
  4.         if($modx->documentObject['template'])
  5.         {
  6.                 $sql = "SELECT templatename FROM ".$modx->getFullTableName("site_templates")." WHERE ".$modx->getFullTableName("site_templates").".id = '".$modx->documentObject['template']."';";
  7.                 $result = $modx->dbQuery($sql);
  8.                 $row = $modx->fetchRow($result);
  9.                 $templates = $row['templatename'];
  10.                 if (!strstr($templates,"M@"))
  11.                 {       
  12.                         $templates = "M@".$templates;
  13.                         $sql = "SELECT id FROM ".$this->getFullTableName("site_templates")." WHERE ".$this->getFullTableName("site_templates").".templatename = '".$templates."';";
  14.                         $result = $this->dbQuery($sql);
  15.                         $row = $this->fetchRow($result);
  16.                         $new_id = $row['id'];
  17.                         $sql = "SELECT * FROM ".$modx->getFullTableName("site_templates")." WHERE ".$modx->getFullTableName("site_templates").".id = '".$new_id."';";
  18.                         $result = $modx->dbQuery($sql);
  19.                         $rowCount = $modx->recordCount($result);
  20.                         iif($rowCount==1) {
  21.                                 $row = $modx->fetchRow($result);
  22.                                 $modx->documentContent = $row['content'];
  23.                         }
  24.                 }
  25.         }
  26.         break;
  27. }

上記の処理では、テンプレートID番号からテンプレート名を取得し、M@(キーワード)がないテンプレート名の場合は、そのテンプレート名の先頭にM@を付けたテンプレート名をデータベースから探し出し、その内容をDocumentContentに格納します。
ちなみに、$modx->documentObject['template']にテンプレートのID番号が入ってきます。
(_blankの指定の場合は、0/nullです)
該当テンプレートが見つからないか、複数見つかった場合(ありえないとは思うけど)は、テンプレートを変更せずにそのままオリジナルテンプレートで動作します。
ここら辺は、しっかりとルール通りに設置運用しておけば問題ないはずということで手を抜いています。

携帯3キャリアごとにテンプレートを分ける場合には、それぞれテンプレート名の区別する文字コードを付加して、対応テンプレートを求めればよいでしょう。(ココでは、ロジックを簡潔にする為に携帯かそうでないかしかやっていませんが)
同じように、MacかWinで別のものっていう場合も同様に可能かと思います。

もちろん、プラグインで変更ではなくてスニペットでという方法も考えられます。
実際試してはいませんが、テンプレートに判定スニペットを作ってそれを呼び出すだけ・・・・。
実際のテンプレートの内容の部分はチャンクをテンプレートとして使う一般的なやり方です。

[!UA?pc=aaaa&mobile=bbb!]

みたいな感じのスニペットで、UserAgentを判別して、PCなら変数pcのチャンクを返して、携帯なら変数mobileのチャンクを返すという方法です。

多分、いけるはずです。
この方がシンプルかも知れませんねぇ。

ところで、このテンプレートを動的に切り替えるプラグイン及びスニペットではドキュメントのキャッシュを有効にしてはいけません。
当然のことながら、UAごとに中身が変わっちゃうわけなので・・・・。

あとはページングですけど、これはPagenationプラグインも合体させればいけるんじゃないかなぁと思います。

絵文字とかについては・・・・いつか、トライしてみますが・・・コンバートするしかないなかぁ プラグインで。
アクセスキーについては、そのままPC用でも入れて置けばよいとは思いますが・・・。
ってなことで、不明な点、おかしいぞ というところがありましたらご連絡くださいまし。

投稿者 ZeRo

このエントリに定義されたタグ:
5 24

使う人がいるかどうか・・・っていうぐらいにレアなTIPSかも・・・・。

どんな場面で使えるかは、皆さんの判断で・・・なんですけど、どんなときに使えるのかを架空のたとえ話で書いてみます。

個人でやってる美容店のHPで予約フォームがあると思ってください。
メニューもカットからパーマの種類とかいろいろありますよね?
もちろん、流行のなんとかとかメニューも季節や流行で増えたり減ったり・・もちろん、その説明ページもあるとします。
メニューごとに1ドキュメントが割り当てられている状態です。
もちろん、ビューは1ページごと見せる必要はないのでDittoを使って1ページにまとめちゃうという手を使うかも知れません。
が、ここで1つのメニュー=1つのドキュメントとして扱うのがミソです。
なぜなら、予約フォームにはお客さんにメニューも選択してもらうからなんです。

普通に考えれば、予約フォームのHTMLはテンプレート用チャンクにベタでメニュー項目を書くわけですが、メニューの増減の度にテンプレート用チャンクも書き換える必要があるのがわずらわしいわけです。

そこで、メニューに該当する部分を動的に作り上げたいなという欲求がでてきます。
先ほど、1つのメニュー=1つのドキュメントという形にすれば、アクティブな子ドキュメントの一覧を引っ張り出すのはMODxのAPIを使えばすぐです。
これで、引っ張ってきたpagetitleとかをSELECTのOPTIONパラメタとして動的に生成してしまえば、テンプレートの書き換えもせずに済むことになります。

このように、利用したいスニペットがチャンクでテンプレートなどを利用する場合で、かつ、このテンプレートを動的に書き換えたいっていう場合に使えるテクなわけです。

ということで、そのチャンクの書き換えは至ってシンプル。

  1. $modx->chunkCache['チャンク名'] =データ;

ほかにどんな利用法があるのか思い浮かばないのが悔しいですけど・・・・、そんなレアなTIPSでしたぁ

投稿者 ZeRo

このエントリに定義されたタグ:
5 16

MODxの内部コードをShif_JISで運用するには文字コードの問題であまりお勧めはできません。
しかし、フロントエンドはShift_JISで表示させたい・・携帯でも見れるかも知れないし・・

ということで、以前作った携帯対応ページをシンプルにして、SJIS表示のプラグインを作ってみました。
これを使ったのがSELECT@PETITPOWERのサイトです。
0.9.6RC3ですが、ちょっとコアが変わったのかキャッシュされていても利用可能です。

単純にSJIS出力のみにするプラグインのコードは、以下の通り。

  1. $e = &$modx->Event;
  2. switch ($e->name)
  3. {
  4. case "OnWebPagePrerender":
  5.         $type = !empty($modx->contentTypes[$modx->documentIdentifier]) ? $modx->contentTypes[$modx->documentIdentifier] : "text/html";
  6.         if ($type == "text/html" || $type=="text/css" || $type == "text/javascript")
  7.         {
  8.                 $header = 'Content-Type: '.$type.'; charset=Shift_JIS';
  9.                 $modx->documentOutput = mb_convert_encoding($data,"SJIS-win",$modx->config['modx_charset']);
  10.                 @header($header);
  11.         }
  12.         break;
  13. }

イベントは、OnWebPagePrerenderをフックします。
コンテンツがHTML/CSS/Javascriptに割り当てられていたら、SJISに変換して出力するような処理をしています。
XMLだったら、そのままMODxの文字コードで出力するので、もし、EUC-JPだった場合でUTF-8にしたければ、上記の変換ロジックを参考に、XMLならUTF-8に変換して出力するように変更します。

なお、HTMLテンプレート側にはCharsetはShift_JISと書いておかないといけません(ブラウザが文字コードを認識して正しく表示するとは思いますが)

ということで、これをベースにいじりまわすと携帯への対応もできるかと思います。
携帯だと、まだいろいろと細かいところがあるのでこのプラグインだけで済まない問題もあるとは思いますが・・・。
ページネーションとか、真面目にXHTMLをキャリア毎に出すとか・・絵文字コードとか・・・。

投稿者 ZeRo

このエントリに定義されたタグ:

(ページ 1/2, 合計 17 エントリ)