カゴヤの旧共用サーバ(プラン10とか20とか)から共用サーバー3Gに乗り換える

カゴヤの旧共用サーバ(プラン10とか20とか)ではデータベース作るたびに500円課金なので、サンプル用にCMS入れてクライアント様にプレゼンする場合などでもいろいろと出費が重なったりしてました。
(まぁ月末締めで請求なので月末までに消せばいいんですけどね。)

なので現行の共用サーバ(共用サーバー3G)に乗り換えたのです。

切り替えはカゴヤのコントロールパネルから申請すれば即時切り替わりでした。
注意点としてはサーバー上のファイルがすべて削除になってしまう点。
なのでFTPクラインとでファイルを全部ローカルに落とし、データベースもダンプを取ってから切り替え。

昨日なでしこJapanのサッカー中継見ながら切り替えて今朝方にはDNSも切り替わっておりました。

あと気になってたメールがらみなんですが、メールに関しては一切止まることなくそのまま移行しました。
まぁ止まったら逆に困るんですけどね;

これでDB作り放題なのでOpnePne(SSH叩けないので「OpnePne2」しかは入らないですけどね;)とかMoodleとかいろいろ入れてプレゼン用のサンプルサイト作らないとです。

modxロゴ

modx revo で同一ページにリンクする(Base URL Same-Page-Link Fix 改造)

久々にModxの話なんですけど。

うちのサイトもModx Revoサで動かしてたんですが、ver2.07とかそれくらいのバージョンから急にパッケージインストーラーが使えなくなって、アップデートしようにも上書きアップデートが出来なかったんです。
(テーブルのカラムとかが違うとか言われて;たぶんなんかのプラグインがDB書き換えたのか?;)

なのでサーバー変えたのをきっかけに2.0.7-plから2.2.4-plにアップデートしてみました。

アップデートと言っても中身は新規インストールでして、ダンプしたデータベースのSQLを現行のテーブルにあわせて書き換え、必要な部分だけリストア(コンテンツとテンプレート&チャンクとかプラグインの類は入れなおし)し、どうにか元に戻ったんですが、アンカーにリンク <a href=”#hoge”> とかが効かなくなってるんですよ。

もともと「Base URL Same-Page-Link Fix 」(http://modx.com/extras/package/baseurlsamepagelinkfix)を入れていて以前のmodxであれば問題なく動いてたんですけど、バージョン挙げたら急に効かなくなったんです。

そういえば別の案件でも同じようなことがあって、その時はそんなにアンカー使うこともなく

<a href=”[[*alias]].html#hoge”>hoge</a>

とかで切り抜けたんですけどやっぱり非生産的ですのでプラグインで何とかしたいと思ったわけです。

んで、Base URL Same-Page-Link Fixのソースを見てみていろいろと弄ってみたのですが、どうやらリソースの内容自体が取得できてなくて、さらに出力もされてなさげだったんですね。

Revoのプラグインとかでリソースの内容を丸ごと取得するのが以前は

$source = &$modx->documentOutput;

とかで出来ていたらしいんですが
(上記の場合$modx->documentOutputでコンテンツを取得し$sourceに代入)
どうやらこれが効いてないらしいのです。

なので上記の部分を

$source =$modx->resource->_output;

に置き換えてしまいます。
(modxのフォーラムでこんな記事を見つけました。「OnWebPagePrerender no longer modifies document output」)

あとはプラグインに書かれているようにリンク要素をstr_replace関数で置き換えることが出来ます。

最後にプラグインの一番最後に

$modx->resource->_output=$source;

として置き換えた内容($source)を $modx->resource->_output に戻してあげることで出力が完了です!