トップに戻る 掲示板に戻る
MODx関連
1 : uglydog◆99LvjsCqN26 : 2006/10/31 01:17:26 ID:oHr25k3E
MODx( http://modxcms.com/ )の話題。
拙作のSnippetsに関する質問もどうぞ。
2 : tkfm : 2007/02/05 03:26:08 ID:gDbGWr1mU
★WordPressIntegratorについて

私のブログにコメント頂き有難うございました。WordPressIntegratorがエラーを吐いてしまい上手く動作できていません。どのあたりから確認すれば良いか助言頂ければ幸いです。

MODxをルートディレクトリにインストールしており、WordPressMEは「/wp」にインストールしました。WordPressME自体は直接アクセスして動作を確認済みです。これに「/Blog」でMODx経由でアクセスさせようとしています。

MODxは「0.9.5.1-RC1」で、WordPressMEは「2.0.7」です。MODxはフレンドリーURLとフレンドリーエイリアスをOnにしており、エイリアスパスはOffで使っています。

WordPressRouterプラグインが動作していないような感じもありますが、そもそも「[!WordPressIntegrator!]」を記述するドキュメントに直接エイリアスを付けてアクセスするのとの違いが理解できていません...

ブログに書いたエラーメッセージは、「最新の1件表示」でも「[!WordPressIntegrator!]」を記述したドキュメントにアクセスしても、同じメッセージが表示されます。

なんとも情報不足とは思いますが、どのあたりからチェックすれば良さそうでしょうか? 宜しくお願い致します。
3 : uglydog◆99LvjsCqN26 : 2007/02/05 19:57:39 ID:5MdfT163I
フィードバックありがとうございます。

MODx, WordPressMEの場所, アクセス用の"/Blog"も問題ないと思います。
(プラグインの設定で
define ('PAGE_WP_TOP', '[!WordPressIntegrator!]を書いた(/Blogでアクセスさせたい)ドキュメントのID');
define ('WORDPRESS_ALIAS', 'Blog');
となっているのですね)
余談ですが、ここでアクセス用のURLを/wpとしてしまうと、すなわち実際にWordPressMEの
ある場所にすると動作しなくなります。


プラグインが動いていないらしいということで、まずはWordPressRouterの
「システムイベント」タブで"OnPageInit"を有効になっているかどうか確認してみてください。

直接[!WordPressIntegrator!]のドキュメントにアクセスしないのは以下のような理由によります。

たとえばWordPressが http://example.com/Blog/2007/02/05/WP というURLを生成した場合、
MODxはデフォルトで
・バージョン0.9.5以上でエイリアスパスONのとき/Blog/2007/02/05/WP
・0.9.2やエイリアスパスOFFの場合/WP
というドキュメントを取得しようとし(大抵は)失敗してしまいます。
WordPressRouterを使うことで、/Blogという文字列が先頭に含まれるアクセスは
以降の文字列が何であってもWordPressに向けられたものと解釈され、スニペットを
配置したページが表示されます。

最新の一件表示はWordPressRouterに依存しないはずなので、(さらに)何処か設定ミスがあるかもしれません。
WPのオプション>一般設定 で
WordPress のアドレス (URI):http://example.com/wp
ホームページアドレス (URI):http://example.com/Blog
に設定されているかどうか、

また、スニペットで
define ('WPMODX_WP_PATH', '/public_html/yoursite/wp');
などと、UNIXの絶対パス形式でWPの位置が指定されているか、
MODxとWPの使うデータベース/ユーザが同一か確認してみてください。
4 : tkfm : 2007/02/05 23:50:24 ID:gDbGWr1mU
お返事有難うございます。

プラグインですが、例えば...
 define ('PAGE_WP_TOP', '1');
 define ('WORDPRESS_ALIAS', 'aaa');
と書いて「Template Service Events」の「OnWebPageInit」のみチェックを入れて http://hoge.com/aaa でアクセスすると、
ID=1のドキュメント(TOPページです)が表示されるということですよね?
何故か404(Not Found)に指定したIDのドキュメントが表示されます...
やっぱ、まずはプラグインが動いてないですね~

直接アクセスさせない理由は理解しました。

WordPressの一般設定はそのようになっています。

パスについては、エラーメッセージがWordPressの「functions.php」を実行しようとした結果になっているので、
ファイル自体は正しく見つかっていると認識しています。

DBについては、レンタルサーバーの仕様で1つしか作れないんですよ~
接頭辞で識別して使用しております。

う~ん... 何で動かないんだろう?
5 : uglydog◆99LvjsCqN26 : 2007/02/06 01:00:41 ID:5MdfT163I
その条件下ですと、ID=1が表示されるはずなのでプラグインの不調が濃厚ですね。

$_REQUEST['q'] = $_GET['q'] = str_replace(WORDPRESS_ALIAS.'/', '', $_REQUEST['q']);
と書かれているところを
$_SERVER['QUERY_STRING'] = $_REQUEST['q'] = $_GET['q'] = str_replace(WORDPRESS_ALIAS.'/', '', $_REQUEST['q']);
$_SERVER['REQUEST_URI'] = '/'.$_SERVER['QUERY_STRING'];
と修正してみてください。
プラグイン自体の不具合の可能性があります。

当初のエラー(こちらに張らせてください)
Fatal error: Call to a member function on a non-object in /(WordPressのインストールされたディレクトリ:絶対パス)/wp-includes/functions.php on line 221
がこれで改善するかは不明ですが、404は避けられるかもしれません。
6 : tkfm : 2007/02/06 03:11:15 ID:gDbGWr1mU
修正してみましたが変わりませんでした...

それどころか、これらの実行条件となっているif文や、
さらにそこへの条件分岐となっているswitch文を全てコメントアウトしても
404ページばかりが表示されます。
すなわち...
define ('PAGE_WP_TOP', '1');
define ('WORDPRESS_ALIAS', 'aaa');
$this->documentMethod = 'id';
$this->documentIdentifier = PAGE_WP_TOP;
$_SERVER['QUERY_STRING'] = $_REQUEST['q'] = $_GET['q'] = str_replace(WORDPRESS_ALIAS.'/', '', $_REQUEST['q']);
$_SERVER['REQUEST_URI'] = '/'.$_SERVER['QUERY_STRING'];
としてもID=1のページには飛んでいきません。

そもそもこのプラグインが実行されていないのかも。
というか、試すときってブラウザに http://hoge.com/aaa と入れてアクセスすれば良いんですよね?
これでは OnWebPageInit のイベントは起きないのかな?
7 : uglydog◆99LvjsCqN26 : 2007/02/07 01:39:27 ID:5MdfT163I
OnWebPageInitを発生させるタイミングはそれであっていると思います。
コメントアウトでは(実際に"/Blog"は存在していないので)404になるのは正常な動作かもしれません。
次の手順でプラグインがどこまで動いているか確認してみてください。
1) if文のブロックの中にdie("foo");と書いてhttp://hoge.com/aaaにアクセス
2) case "OnWebPageInit":の直後に書いた場合
3) プラグインの先頭に書いた場合

それから別の方の例ですが、WPのテンプレートがデフォルトのものでない場合に
原因不明のエラーが出ることがあったので、できれば動くまではデフォルトのにしてみてください。
8 : tkfm : 2007/02/07 02:13:12 ID:gDbGWr1mU
何度もコメント有難うございます。

上記例では、もちろん http://hoge.com/aaa にアクセスして試験しています。
if文もcase文もただの条件分岐ですから、取っ払ったら必ず本処理に来ると思って試したのですが...

で、今回ご教示頂いた試験ですが、どのケースも404(Not Found)となりました。
やはりこのプラグイン自体が呼び出されて居ない感じです。
ちゃんと「OnWebPageInit」にはチェックが入っているんですが...

なお、WordPressのテーマですが、インストール直後のデフォルトは「EasyAll 1.0」というテーマです。
他に「WordPress Classic 1.5」「WordPress Default 1.6」というテーマがありますが、
どのテーマに設定しておいても同じですね~

ちなみに、そちらで動作させているMODx・WordPress・PHPのバージョンはそれぞれなんでしょうか?
9 : uglydog◆99LvjsCqN26 : 2007/02/07 03:39:13 ID:5MdfT163I
こんばんは。なかなかうまく行きませんね。

if文やcase文を取り払うと、確かに本処理(MODxの通常の処理)に移りますが、
"aaa"なるドキュメントは通常のMODxからすれば存在しないために
404となるのは順当ではないでしょうか?

1,2,3を試されてどれも404ということですので、OnWebPageInitによる
プラグイン起動がそもそもなされていないようです。
望み薄ですが、試しに新しい白紙のプラグインを作成し、
Template Service EventsのOn…に片っ端からチェックを入れてdie("foo");とだけ書いてみてください。
(Manager Access Eventsには決してチェックを入れないでくださいね;マネージャが使えなくなるので)
これでも変化がない場合は…お手上げに近いです。

他のOnPageWebInit系のプラグインと競合している可能性も0ではないかもしれません。
(時間と気力がおありでしたら、MODxを別に入れなおして)WordPressIntegratorだけを
入れてみれば活路が開けるかもしれません。

開発環境は、
PHP 5.1.4
MySQL 5.0.22
MODx 0.9.5
WordPress ME2.0.5
です。
10 : tkfm : 2007/02/08 02:19:42 ID:gDbGWr1mU
何度もレス頂きながら上手くいかずすみません。
欲しい機能だけに動かないのは残念だなぁ~

MODxやWordPressをゼロから入れなおしたり、
他のサーバーに入れてみたりしたけれど、
結局どれも同じ結果になっています...

まだまだ修行が足りませんね~
せっかくいろいろアドバイス頂いたのにすみません。
掲示板汚しただけでした...

継続してがんばってみます!
11 : uglydog◆99LvjsCqN26 : 2007/02/08 02:39:47 ID:5MdfT163I
結局力になれなくて済みません。
続報お待ちしておりますので、また何かあったら気軽にどうぞ。
12 : acnakada : 2007/02/20 11:14:51 ID:G8jLgCeWL
Modx GoogleSiteMap_XML vo.1についてご教授お願いします。
指定IDの子孫ページは含めるオプションの使い方は
(blogの記事をサイトマップに含めたい)
下記のような書き方で正しいでしょうか?
blogの記事がサイトマップに含まれません。
宜しくお願いします。

[!GoogleSiteMap_XML?&removeNoSearchPage=1&removeNoMenuPage=1&forceAddDescendants=2!]
13 : tkfm : 2007/02/23 00:28:34 ID:gDbGWr1mU
しつこくWordPressIntegratorと戦っています。
別サーバーでいろいろ試しているんですが、例の404(NotFound)の件は、
MODx側で「エイリアスパス」を使用する(Yes)設定をすると起こるようです。
エイリアスパスの設定欄に注意書きとして...『エイリアスパスを使用するとき
は、ドキュメントから参照するものは全て絶対パスで指定する必要がありま
す。…そうしないとエイリアスパスからの相対パスとなり、あなたが期待した参
照にはなりません。』と書かれていますが、404エラーの件と何か関係がありそ
うでしょうか? ちなみに、エイリアスパスを使用しない状況では、404にならず
正常に表示されています…
14 : uglydog◆99LvjsCqN26 : 2007/02/28 18:02:56 ID:jGUmI1bYK
返信遅れて済みません。
>>12
/blogのIDが2ならそれで正しいはずです。こちらで動作させてみたところ
blogの記事(article-??????????)が含まれました。
「非公開」か「検索:No」になっていませんか?

>>13
情報ありがとうございます。こちらのテスト環境でも再現しました。
エイリアスパスONの場合、document.parser.class.inc.phpの1081行目で、
存在しないパス(WPIのパスはMODxにとっては存在しないパスです)が渡されていた場合
OnWebPageInitイベントを発生させる前にエラーとしてしまうことが原因のようです。
これ以前に呼ばれるイベントがあれば対応できますが、そうでない場合は
MODx自体を変更しないとエイリアスパスONには対応できないと思います。
また検討してみます。
15 : tkfm : 2007/03/01 01:02:56 ID:gDbGWr1mU
お返事ありがとうございます。
根が深そうなので…(諦めが早い! 笑)...
uglydogさんのサイトにあるフレンドリーURL改良を試しています。
2つ質問させて下さい!
[1] 「子ドキュメントを持つドキュメントのURLを格好良く表示」ですが、
Wayfinderでメニューを作ると動作せず(「hoge.html」のまま)、
[~3~]などとID指定で表現すると正しく動作します(「hoge/」になる)。
[2]WordPressIntegratorスニペットが動作するたび(ワンクリックごと)に、
MODxのイベントログにエラーが発生します。エラー内容は、
「Redefining already defined constructor for class WP_Object_Cache」
となっています。これってuglydogさんの環境では発生しませんか?
以上です。宜しくお願い致します。
16 : 鶴岡 : 2007/03/04 19:56:47 ID:VMMJDeUTP
WordPressIntegratorが上手く働きません。

MODxは「0.9.5」を使用し「modx」というディレクトリに、
WordPressMEは「2.1.1」で「modx/wp」にインストールしました。
フレンドリーURLはOffになっています。

http://nanabit.net/modx/wordpress-integrator.htmlの記事に従い、
「blog」というエイリアスのドキュメントに設定したのですが、
http://hoge.com/modx/blogにアクセスすると「Not Found」となります。

試しにスタートページをWordPressを表示させるぺージにして
hoge.com/modx/にアクセスすると、
ちゃんとWordPressの記事が表示されました。
ですが、「Welcome to WordPress」のリンクや「コメント」のリンクに飛ぶと
hoge.com/modx/blog/?p=1となり、
やはり「Not Found」となってしまいます。
また、「hoge.com/modx/?p=1#comments」という風にアクセスしたところ、
コメント等が表示されず、通常と同様に表示されてしまいました。

動作はしているようなのですが、どうにも中途半端な状態です。
どのあたりを修正してみれば良いか、アドバイス頂けませんでしょうか。
よろしくお願いします。
17 : uglydog◆99LvjsCqN26 : 2007/03/12 00:55:34 ID:BJ2w5S6xY
返信遅れてますが…13日には時間が取れそうなので、今しばらくお待ちください。
>>15 試してみます。
>>16 自分も開発中そういう状況になったことがあります。検証してみます。
18 : uglydog◆99LvjsCqN26 : 2007/03/13 23:58:04 ID:BaZtEjjSH
お待たせしました。13日…滑り込みセーフですね。
>>15
[1] Wayfinder1.0.1ですよね。
何故か手元のWayfinderは0.9.5付属のと一部違っていて、
assets/snippets/wayfinder/wayfinder.inc.phpの144行目
} else {
$v['link'] = $modx->makeUrl($v['id']);
}

} else {
if (!empty($v['alias']))
$v['link'] = $modx->makeFriendlyURL($this->config['friendly_url_prefix'], $this->config['friendly_url_suffix'], $v['alias']);
else
$v['link'] = $modx->makeUrl($v['id']);
}
となっていました。これで動くと思います。
おそらく自分で書いたのでしょうが記憶がない…

[2] こちらでは出ていないようです。wp-cacheなどのキャッシュ系プラグインを使っていますか?

>>16
それはスニペットは正常に動いていて、プラグインが動いていない場合の症状でした。
もし過去のWordPressIntegratorをお使いなら、プラグインの先頭と末尾に<?php ?>が
入っている筈ですので、除去してください。
あるいはOnWebPageInitのイベントで起動する設定がなされているか確認してみてください。
19 : tkfm : 2007/03/14 01:19:09 ID:gDbGWr1mU
調べていただき有難うございました~!

書き忘れましたが、MODx「0.9.6-RC2」WordPressMEという「2.1.2」環境です。
サーバーはuglydogさんと同じXREA(S265)を新たにとって実験してます。

[1]それがですね...Wayfinder「2.0 RC1」でした。中身が相当書き換えられてるみたいで、どこが該当部分に相当するのかすら分かりません。涙 とりあえずメニューは手作業で...笑

[2]Pluginはデフォルトのまま触ってないんですけどね~ MODxのバージョンの問題なのかも...

もう少しこちらでもいろいろいじくって見ますね。
また何か開発に役立ちそうなものが見つかったら連絡します!

有難うございました。
20 : 鶴岡 : 2007/03/14 13:06:39 ID:BiB96t1nA
お調べいただきありがとうございます。
プラグインについてもう一度設定を確認してみたのですが、
やはり先頭と末尾の<?php ?>についても削除済みで、
OnWebPageInitのチェックも入っていました。
プラグインを動かすのに、他に必要な操作はありませんよね…。
(「プラグインの停止」ならありましたが、
 「プラグインの開始」というのはなかったですし)

こちらでももう少し調べてみます。よろしくお願いします。
21 : 名無しさん : 2007/03/15 03:10:22 ID:umGft2i1v
はじめまして。
7bit様のサイトでいろいろと勉強させていただいております。
この度
blog/2006/12/19/alias-path-like-handling/
のページを拝見いたしましてWayfinderの修正を行ったのですが
うまく動いてくれません。
いろいろと設定を見直したりしたのですがどうしてもだめでしたので
是非ご教授いただけないでしょうか?

現在、ルート直下ではなくmodxディレクトリを作りその中で動かしています。
症状としましては

メニュー(インストール初期)よりfeatures>ajaxといった場合
www.test.com/modx/features/ajax.html
でアクセスしたいのですが、20070314追記の修正を行っても
www.test.com/ajax
にアクセスしてしまいます。
また、featuresにアクセスしようとしても
www.test.com/features/
となりうまくいきません。
そのほか
geting-help、design、contact-usに関しては
www.test.com/design
のようになり最後のスラッシュがうまく表示されません。

ルート直下で動かせば解決するのかもしれませんが
できればmodxディレクトリで動かしたいと思っています。
何か良い方法があれば大変お手数ではございますが、
ご教授のほどよろしくお願いいたします。
22 : taka : 2007/03/15 03:12:29 ID:umGft2i1v
もうしわけございません。
名前を入力し忘れておりました。
takaと申します。
よろしくお願いいたします。
※最大URL数のエラーがでたため文章中のhttp://を
 省かせていただいております。
23 : tkfm : 2007/03/22 00:09:37 ID:gDbGWr1mU
現在uglydogさんと同じMODxのバージョンに戻して再チャレンジ中です。

Wayfinderの部分は上の書き込みのtakaさんと同じ症状が出ています。
wayfinder.inc.php や document.parser.class.inc.php をいじっていますが、
今のところ有効な解決策にたどりついていません...

MODxのイベントログの件は、別のエラーが毎クリックごとに出るようになりました。
「Assigning the return value of new by reference is deprecated」というエラーをWordPressIntegratorスニペットが吐いています。

To:takaさん
「modx」がURLから抜けてしまうのは、テンプレートに
「<base href="[(site_url)]" />」というタグが無いときの症状に似てますね。
「<head>...</head>」の間のどこかに入ってますか?
あと、最後のスラッシュはそのページが「フォルダ」になっていないと出ませんよ。
デモコンテンツの「geting-help、design、contact-us」は
フォルダになっていないので、スラッシュが出なくて正解です。
(最後の「.html」が消えちゃうのはおかしいけど...)
24 : taka : 2007/03/25 21:24:21 ID:aAuWJ5Bmo
tkfmさん

レスどうもありがとうございます。
「<base href="[(site_url)]" />」のタグはきちんと入っています。
あと最後のスラッシュの件ですが、なるほど確かにフォルダになってませんでした。
ただ、その場合やっぱり.htmlがでて欲しいところですね。
もうひとつドキュメントやフォルダでなく、ウェブリンクにしたとき(たとえばGoogleにリンク)のリンク先がwww.google.comにならずにそのコンテンツのエイリアスのURL(www.test.com/google/)になってそのページにアクセスするとGoogleに飛ぶようです。(説明が下手で申し訳ありません)

今のところスラッシュの件はwayfinderをあきらめDropmenuを使用し急場をしのいでいます。
25 : naka : 2007/03/28 19:22:04 ID:8kabMvE1R
はじめまして。nakaといいます。

WordPressIntegratorというすばらしいスニペットありがとうございます。
このまま問題が無ければ使わせていただくと思います。

「このまま問題が無ければ」というのは、例の
「エイリアスパスONで404 Not Foundが表示される」という件のことです。

都合により、エイリアスパスON状態での運用という設計にしてしまったため
エイリアスパスONで使いたいのです。(コアの改造も保守を考えるとあまりしたくありませんし)

そこであれこれ悩んだ結果ひらめいたのですが、エイリアスパスONではmodxの仕様により
「リクエストされたパスが実在するかチェックし、しない場合はエラー処理に移る。」
エラー処理に移るとはすなわち、modxで設定されたエラーページへ飛ぶということです。

ならば、そのエラーページでURLが「/blog/~」なら、
[!WordPressIntegrator!]が書かれたWordPress用ドキュメントに戻ってくる。という発想です。

そこでエラーページのはじめに[[hook404]]という以下のスニペットを記述した所うまく動いているように見えます。
[[hook404]]
<?php
if(preg_match("/^\/blog\//",$_SERVER["REQUEST_URI"])) {
$modx->sendforward(88);
}
?>

個人的にURLに?などをなるべく含ませたくないため、WordPressの方は
「パーマリンク構造のカスタマイズ」を「日付と記事名に基づく表示」に変更しましたが問題ありません。
(WordPressに.htaccessを設定してくださいと言われましたが、仕組みから考えてこの場合は不要と思い設定していません)
帰ってくるヘッダもちゃんと200になっているようです。

modx、WordPressともにあまり慣れていないため、この方法でいいのか、なにか根本的に
勘違いをしているのではないのか不安なのですが、このような方法で解決した(のか?)という
例としてご報告させていただきます。
26 : naka : 2007/03/28 19:40:48 ID:8kabMvE1R
もしかして、この方法ならWordPressRouterいらないですかね・・・?
切っても動いているっぽい。
27 : uglydog◆99LvjsCqN26 : 2007/03/29 01:40:41 ID:6QvAGD7g7
済みません、返事が滞っていて…
公(と言ってもバイトですが)私ともにプチデスマ状態。
さらっと拝見しましたが、nakaさんの方法、かなり良さそうです。
そのままなり改良するなりして、次回のWordPressIntegratorの
更新の参考にさせて貰って良いでしょうか?クレジット入れますので。

wayfinderやdocument.parser.class.inc.phについても少し調べてみます。

何にしても次回更新は金曜以降になってしまうと思いますが…
28 : naka : 2007/03/30 00:28:54 ID:vRLfmeWqM
>そのままなり改良するなりして、次回のWordPressIntegratorの
>更新の参考にさせて貰って良いでしょうか?
もちろんです!
 
どうみても、パス・ID埋め込みのプチハックなので、そこを変数に置き換えると
もはや私のコードはなくなっちゃうと思いますけど^^;
コードは無視してアイデアだけ持っていっちゃってください。
 
本当は、modxにパスが見つからない時に、ほかにまわせるような
システムイベントを作るのが正攻法だとは思うんですけどね。
一応、OnPageNotFoundはあるみたいですが、どうもこういう用途には使えないっぽい。
29 : uglydog◆99LvjsCqN26 : 2007/04/18 18:30:00 ID:BvMfrUt/d
長らくお待たせしました。
先ほどnakaさんの案を取り入れたWordPress Integrator 1.1.0をリリースしました。
http://nanabit.net/modx/wordpress-integrator/
あわせて、WordPress ME 2.1.3にも対応。

今まで動かせなかった方も是非HookWordPress版を試してみてください。
なお、上記ページにも書いてありますが、
・wp-settings.phpの修正
・wp-db.phpの修正
にご注意ください。

Wayfinder/FriendlyURLの件は再現出来ていないのでまだ何とも出来ませんが、
自分の環境では一応動いているようなので、0.9.5用のパッチをそのうちUPする予定です。
(Weblinkは使っていないので対応出来ないかもしれませんが…)
30 : uglydog◆99LvjsCqN26 : 2007/04/21 02:01:53 ID:BvMfrUt/d
先ほどOnPageNotFoundで試してみたら、スニペットによるフックなしでエイリアスパスに対応してしまいました。
以前0.9.2.1辺りで試したときはダメだったような記憶があるのですが…
というわけで、WordPress Integrator 1.2.0をリリース。
エイリアスパスONに加えて、フレンドリーURL OFFでの動作も確認しました。
31 : tkfm : 2007/04/22 23:23:03 ID:gDbGWr1mU
WordPress Integrator 1.2.0 を MODx 0.9.5 と WordPressME 2.1.3 で試してみました~

設定は「フレンドリーエイリアスOn+エイリアスパスOn」にしましたので、
WordPress Router のイベントを「OnPageNotFound」にチェックしました。

結果は問題なく動いていますよ~ ...1つを除けば。

以前から出ていた、WordPressIntegratorスニペットが動作する度に吐くエラー
 「Assigning the return value of new by reference is deprecated」 ( イベントId:1、元:WordPressIntegrator - Snippet )
がずっと消えないんですよね~

これだけは原因不明...トホホ。

でも、本当に素晴らしいSnippet&Pluginをありがとうございました!
32 : uglydog◆99LvjsCqN26 : 2007/04/23 01:38:18 ID:BvMfrUt/d
調べてみたところ、こちらでもそのエラーが出るようになっていました。
wp-includes(cache.php, query.php) の=& を=に置換し、さらにコンストラクタの
多重定義でエラーが出るようになるため、__construct()を残して他方
(たとえばcache.phpの399行目(WPME2.1.3)のfunction WP_Object_Cache、wp-db.phpの45行目のfunction wpdb)
を消すとエラーが出なくなるようです。
33 : 風雲 : 2007/05/10 18:25:18 ID:gwOkPhnWK
●各記事へのアクセスができない点について

風雲と申します。お世話になっております。
この度、以下のバージョンでWordPress Integratorを使わせていただいていますが、wordpress(以下WP)の各ページに行くと404または、MODXテンプレートが適用されたWPトップページと変わらないという現象が生じてしまいます。

環境は、
wordpress ME2.1.3
modx 0.9.5
WordPress Integrator、WordPress Router 1.2.0
で、

インストールは、http://nanabit.net/modx/wordpress-integrator/に従い、
WORDPRESS_ALIASをwordpress
WPMODX_WP_PATHを/home/user/public_html/modx/wp
としています。
したがって、modxディレクトリのなかのwp/にwordpress本体が入っています。
(modx/内にwordpressがないことも確認しています)

またmodxとwordpressをインストールしたデータベースは同じにしていますし、wordpressはデフォルトテンプレートで、上記URLに書かれたこと以外は手を加えていません。

それで、現状なのですが、とりあえず[!WordPressIntegrator!]が書かれたページでwordpressのトップの表示はできていますが、各ページへのアクセスがうまくいきません。

modx/内にある.htaccessのrewriteの記述によって、状況が変わってくるのですが、

RewriteEngine On
RewriteBase /modx
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA,NC]

とすると、各記事をクリックしても[!WordPressIntegrator!]が書かれたページの内容とほとんど変わらなくなり、各記事の下部にある【カテゴリー名、コメント数】という箇所が、【カテゴリー名、Edit、コメント数】となり、Editが追加されるというところだけ変化がおきています。(URLは各ページIDに従い、異なっています。)

また、
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA,NC]

とすると、modxではなく、apacheの404を返してしまいます。
(なのでこれはrewrite先がないだけかと思います)


実際、 以前試したことのある環境、
MODX 0.9.5
wordpress ME2.0.5
WordPress Integrator Version: 1.0.0
では、
RewriteBase /modx
で問題なく動いております。

.htaccessの記述に関して、ルール等はありますでしょうか?
modx自体は現状、フレンドリーURLも使っていないため、rewriteの記述を変えても支障はないのですが、このプラグインの場合支障が出るようですので、ご助言いただければと思います。

また、「トップページなどでは動作しているようだが、個別ページでMODxの404ページになる」の箇所も拝見し、プラグインの始めまたは終わりの空白等をチェックしましたが、問題ありませんでした。(そもそもMODXの404ではないので見当違いかもしれません。)

本来であればaccess.logを確認するなど調べられることはまだあるのでしょうが、レンタルサーバという制限もあって、情報が少なく申し訳ありません。

何か分かるようでしたらご助言いただけると助かります。
不足している点などありましたら、ご指摘のほどお願いします。

宜しくお願いします。
34 : BD : 2007/05/12 01:42:00 ID:859PF4Too
はじめまして、BDと申します

今までwordpressでブログを書いていたので、是非使いたいと思い、ダウンロードさせて頂きました。

MODxをルートディレクトリにインストールしており、WordPressMEは「/wp」にインストールしました。WordPressME自体は直接アクセスして動作を確認済みです。これに「/wordpress」でMODx経由でアクセスさせようとしています。

MODxは「0.9.5」で、WordPressMEは「2.1.3」です。MODxはフレンドリーURLとフレンドリーエイリアスをOnにしており、エイリアスパスはOffで使っています。

define ('PAGE_WP_TOP', 'を書いた(/wordpressでアクセスさせたい)ドキュメントのID');
define ('WORDPRESS_ALIAS', 'wordpress');

「システムイベント」タブで"OnPageInit"を有効になっている事を確認

WPのオプション>一般設定 で
WordPress のアドレス (URI):http://example.com/wp
ホームページアドレス (URI):http://example.com/wordpress

スニペットで
define ('WPMODX_WP_PATH', '/public_html/yoursite/wp');

MODxとWPの使うデータベース/ユーザが同一か確認済み。

肝心のMODxとwordpressは正常に稼働中



上記設定で表示させようとすると、何も表示されません

エラーも何も出ない状態です。

何か間違っているでしょうか?
お手すきでお返事していただけたらと思い、書き込みさせていただきました。
35 : 風雲 : 2007/05/12 15:53:49 ID:oOYFBbUmB
風雲です。お世話になっております。

進展なのか分かりませんが、プラグインの「OnPageNotFound」のチェックをはずしたら、MODXの404を返しました。

コードも見てみて、空白なども確認してみましたが、現在のところ特にそういったことは確認できていません。もう少し試行錯誤してみます。

何かわかりましたらご助言いただけると助かります。

>BD様

/wp-settings.phpの"=&"を"="に変えた時点で、WP側は記事を表示できていないように思うのですが、正常に動いていますか?
わたくしの環境では、上記の点を変えると、wp-admin/以下の管理画面による編集では記事を正しく見つけられなったり(dashboardのサイドバーからは編集できますが)、いくつかうまくいかない点があるように思います。

余計なお世話かもしれませんが、ご参考いただけると助かります。
宜しくお願いします。
36 : BD : 2007/05/12 17:12:37 ID:859PF4Too
風雲様
レス有難うございます

ご指摘の通りに、”=&”を着けた所”[!WordPressIntegrator!]”の文字が表示されました。

相変わらず記事は見れない状態です。

根負けしたくないんでがんばりまーす!
37 : 風雲 : 2007/05/13 02:00:18 ID:XoCgiQbcm
風雲です。お世話になっております。

ソースと格闘することにしました。
/wp-setting.phpにおいて、=に変え、各記事がwordpressにおいて表示されないということは、プラグインの

$this->documentMethod = 'id';
$this->documentIdentifier = PAGE_WP_TOP;
$_REQUEST['q'] = $_GET['q'] = str_replace(WORDPRESS_ALIAS.'/', '', $_REQUEST['q']);

この箇所も機能しないのではないかと思うのですが、いかがでしょうか?
現在、各記事が表示される状態(=に置き換えない状態)で、そこからクエリーを発せないかと試行錯誤しているのですが、それがうまくいけば、TOPのみならず各記事も表示されないかなと淡い期待を抱いております。

ただ、TOPに関しては、=に置き換えた状態で、しかもWP側では記事が見つかっていないにも関わらず、$file_content(WPの中身はこの変数であってますかね?)を取れているので、TOPと各ページを表示する仕組みももう少し見ていかないとダメかもしれません。

まだまだ解決にはほど遠そうですが、何か分かりましたらご助言いただけると助かります。

宜しくお願いします。

>BD様

[!WordPressIntegrator!]がそのまま表示されるということでしょうか?
それであれば、WordPressIntegratorという文字と同じスニペットがあるか確認してみるとよいかもれません。
38 : BD : 2007/05/13 16:47:24 ID:859PF4Too
風雲様

>>[!WordPressIntegrator!]がそのまま表示されるということでしょうか?
そうなんです。文字として表示されます。

同じスニペット等探してみましたが、ありませんでした。

思い切って再インストールしましたが、症状は同じでした。

設定間違ってるのかな…もう1度確認してみます。
39 : 風雲 : 2007/05/14 00:39:06 ID:XoCgiQbcm
風雲です。度重なる投稿申し訳ありません。
wordpressを2.0系にバージョンダウンし、integratorも1.2だけでなく、1.0などを試しております。どうも2.0.10だと色々と変数も増えているみたいで、どうもCall to a member functionから抜け出せません。単にスニペット側に変数が足りないだけなのでしょうか?色々追加しましたが、どうも解決できていません。

該当箇所は、
all to a member function on a non-object in /home/user/public_html/modx/wordpress/wp-includes/functions.php on line 2232
ということで、
functions.php2232行目付近、
function wp($query_vars = '') {
global $wp;
$wp->main($query_vars);
}

function status_header( $header ) {
...
}
を見てみましたが、どの変数もスニペットに記述されているように思います。

2.0.5で動いていたintegrator1.0も2.0.10だとなかなかスムーズにいってくれないので、もう少し試行錯誤してみます。

>BD様
>同じスニペット等探してみましたが、ありませんでした。

とのことですが、[!スニペット名!]という風にして、スニペットを呼んでいますので、そのスニペットがないということは当然呼び出すことはできません。

WordPressIntegratorという名前でスニペットを作り直すか、WordPressIntegratorのソースが書かれているスニペットの名前をWordPressIntegratorにすることで進展するのではないかと思います。
40 : BD : 2007/05/14 18:27:16 ID:859PF4Too
風雲様
度々有難うございます。

スニペット名はスペル、大文字小文字等問題ありませんでしたが、

Parse error: syntax error, unexpected '*' in /virtual/toshio1st/public_html/modx/manager/includes/document.parser.class.inc.php(748) : eval()'d code on line 2
という、エラーが出ました。
これはスニペット本体の問題なんでしょうか??
無知で申し訳ありません。
41 : BD : 2007/05/14 20:28:38 ID:859PF4Too
連続投稿申し訳ありません。

上記の問題は解決しました、設定ミスしてました…
お騒がせしました。

再インストールしまして、サンプルコンテンツを無しにしました。
設定等は同じにして、風雲様の仰るとおりに確認したところ、またもや何も表示されなくなりました。

wp-setting.phpの「=&」は付けたままです。

んー知恵熱が…
42 : tkfm : 2007/05/23 01:15:23 ID:gDbGWr1mU
WordPressも来月には2.2.1が出るようですね。

ためしに英語版(というか「本家」か...)の2.2でWordPress Integratorを試してみました。
が、残念ながらエラー表示が出て動作しませんでした。
2.1.3とはずいぶん中身も変わっているのでしょうね。

WordPressのバージョンアップのたびに対応するのも大変ですよね~
43 : tkfm : 2007/05/23 10:17:19 ID:SMmOnWleP
>風雲さん

私も同じ状況(個別記事が表示されない&wp-setting.php修正で記事が見つからなくなる)を経験しています。

私は2つのレンタルサーバーを契約していますが、
MODx/WordPress/WordPressIntegratorの全く同じバージョンを使用して、
設定方法も全く同じにしても異なる結果が出ています。

1つはハッスルサーバーで、こちらは風雲さんとほぼ同じ状況(うまく動作しない)です。
もう1つはXREAで、こちらは正常に動作しています。

2つの違いはOSとかPHP/MySQLのバージョンの違いです。
問題は根の深いところにありそうで、私には手が出せず、
結局うまく動作するXREAで使っています。

同じ症例がありますよ~という情報提供しかできなくてスミマセン。
44 : 八環 : 2007/05/23 21:52:12 ID:GcSit8.Ch
MODx0.9.5、WordPress2.1.13、WordPressIntegrator1.20、PHP5で一応動作しました。
このときに遭遇した不具合について1つ。

当方、log取りにmoguraを使っていたのですが、Integratorで読み込んだWordPressのdefineと衝突を起してしまいました。
define DB_NAMEが被っていたらしく、DB参照先が上書きされてしまったのです。

そもそもWordPressでdefineを多用しているのが問題な気もしますが、なんとかカプセル化出来ないですかね。
Integrator側で名前空間使うとかサブクラス化すればいいかなぁ、と思っているんですけど、どうでしょう?
45 : uglydog◆99LvjsCqN26 : 2007/05/28 06:34:11 ID:gqSDLCbVl
ご無沙汰しておりました。
MODxも0.9.6が出るようですし、WPも頻繁に更新するので困ったものです。
(といってもglobal変数の=&を=に変える作業が殆どですが)
>>44
名前空間は良いかもしれません。
defineが収まってくれるかはちょっと覚えていませんが…
同じようにDBも現在MODx, WP共通でないとmysql_*の関係で
動かないので、どうにかしたいところではあります。

>>38
確かMODxはスニペットが存在しなくても[!~!]は全部(空文字列に)置換してしまうように
記憶しているのですが、全角/半角は確認されましたか?
46 : 風雲 : 2007/05/28 09:47:52 ID:../ohVvT5
風雲です。お世話になっております。

「Fatal error: Call to a member function」エラーに関してですが、当然かもしれませんがそのエラーをはいているphpのすべてのグローバル変数を追加しただけではエラーは解消されませんでした。
ドキュメントでは、
2. with a higher version than WP 2.1.3, grep all "global $..." in WP source codes,
and add them to WordPress Integrator (if not exists).
とあるので、エラーをはいているphpだけでなく、WP source codesすべてを探しにいかないとだめなんですよね?(といってもどっかで纏まってるような気もしますが)
できれば、追加するグローバル変数の一覧表みたいなものがあると嬉しいですが、WPもどんどんバージョンアップしてますから難しいですよね。

>tkfm様
遅くなってすいません。
XREAでは大丈夫なんですね。

同方の環境は、
Apache/2.2.3 (Debian etch)
PHP/5.2.0
MYSQL/5.0.32
ですので、割と新しい部類に入るかと思います。
特にmodxのrewriteとapache2.2系で、うまくrewriteされず最初手間がかかったので、そのあたりが関係しているのかもしれません。

十分な報告も調査もできず申し訳ないのですが、一応返信させていただきます。
47 : ato : 2007/05/31 02:44:48 ID:DprMOL0vf
はじめまして、atoと申します。
現在 MODxのバージョンは0.96を使用しているのですが、
「MODx 0.9.5 エイリアスパスの制約を受けずに便利にアクセス」
の記事を参考にフレンドリーURLを改造したところおおむね正常に動作しています。
ただ、Wayfinderだけ変更を施す場所がわからず動作を試せないのですが、これはWayfinder(0.96では2.0のようです)のバージョンが上がってしまったからでしょうか?
大変お手数ですが、Wayfinder2.0でフレンドリーURLの改良を動作させる方法を教えていただけないでしょうか?
48 : tkfm : 2007/05/31 10:37:43 ID:SMmOnWleP
>atoさん

(uglydogさんの掲示板で書くことではないかもしれませんが...)
「SEO Strict URLs」というプラグインが似たようなことをしてくれます。
私も現在お試し中です。
http://modxcms.com/SEO-Strict-URLs-1.0.1-1408.html

MODxのコアな部分をいじってしまうと、バージョンアップが難しくなっちゃいますから、
プラグインのように持ち運べる状態で実装する方がベターかな?...
と個人的には思いました。
49 : ato : 2007/05/31 17:52:51 ID:DprMOL0vf
tkfm様

「SEO Strict URLs」のご紹介どうもありがとうございます。
このようなプラグインがあったのですね。
確かにこれならバージョンアップが楽そうです。
ただ一つだけ気になっているのが、この機能は301リダイレクトを
使って実現しているようですね。
(私のつたない英語力ではそのように理解しましたが・・・、
もし違っておりましたらご指摘ください。)

実はMODxとはまったく関係ないところではありますが、
301を使って引越しをした際に大幅に順位が下がったことがありまして、
(もちろんたまたまかもしれませんし、リダイレクトの設定が上手く
いってなかった可能性もありますが、今となっては原因はわかりません)
少し怖いので、コア部分を修正してでも今までどおりmod_rewiteを
使って実現したいと思っております。

uglydog様には大変お手数をおかけしますが、
是非Wayfinder2.0の改良方法を教えていただければと存じます。

tkfm様有益な情報どうもありがとうございました。
50 : tkfm : 2007/07/10 13:32:54 ID:SMmOnWleP
WordPressME 2.2.1 と格闘していますが、結果が出ません。笑

global変数をスニペットに追加したり、「=&」を「=」に置き換えたりしていますが、
以下のようなエラーが出て先に進めません...

PHP error debug
Error: mysql_num_fields(): supplied argument is not a valid MySQL result resource
Error type/ Nr.: Warning - 2
File: /hoge/wp221/wp-includes/wp-db.php
Line: 205
Line 205 source: while ($i < @mysql_num_fields($this->result)) {

何しろPHP素人の上MySQLもど素人(笑)なので先に進めない~涙
どなたかお知恵を...
51 : uglydog◆99LvjsCqN26 : 2007/07/16 05:34:43 ID:gqSDLCbVl
もう2.2.1が出てたんですね…
自分でも2.1.13までしか使ってないのでわかりませんが、
insert/delete/update/replace(?)以外をselectとして扱おうとして失敗している感じですね。
直前で$queryを表示してみると何かわかりそうです。
実際alter tableとかが入ってるのかもしれません。

落ち着いたら試してみようと思いますが、MODxにもWPにもついていけてません…
52 : tkfm : 2007/07/17 00:00:52 ID:gDbGWr1mU
ためしに$queryを表示させてみたら、

SET NAMES 'utf8'

でした... この意味するところは? ワカリマセン 笑
53 : uglydog◆99LvjsCqN26 : 2007/07/17 00:36:15 ID:gqSDLCbVl
MySQL5でエンコーディングをUTF-8にするクエリですね。
wp-db.php194行目の(insert|delete|update|replace)を(set|insert|delete|update|replace)あるいは(SET|insert|delete|update|replace)
にすれば解決するかもしれません。
54 : tkfm : 2007/07/17 01:25:02 ID:gDbGWr1mU
小文字の方は試していませんが、大文字の「SET」を追加したら動作しました!
相変わらずMODxのイベントログに何やらエラーは出ていますが、
表示上は特に問題なく動いているみたいです~

ちなみに、MODx 0.9.6.1+WP(ME) 2.2.1+XREA(s265)です。
55 : moca : 2007/07/21 18:29:19 ID:TyvFhC7O7
始めまして、mocaともうします。
私の方でもMODxの0.9.6+WP(ME) 2.2.1 + ロリポップレンタルサーバーでWordPressIntegrator1.2.0の導入を試みているのですが、どうにもWordPress側の一番トップに設定されているページしか表示されないようです。
一通りglobalをスニペット側に追加してwp-settings.php内の&=を=に。一通りインストールの部分で上げられている設定を行ったところ以下のような動きをしてしまいます:

1、ブログのページへ移動すると普通にエントリーが並んで表示される
2、エントリーへのコメントリンクやエントリータイトルについているリンクをクリックするとURLは変わるが、同じページが生成されて表示される。

ためしにAliasPathを無しにしたりフレンドリーURLを切って見たりしてプラグインのイベントトリガーとの組み合わせ、あとWPのパーマリンクの設定もデフォルト等と組み合わせて見ましたがURLの表記は変わっても結果は同じでした(エラーは出ていない)。

過去ログを見ると風雲様の方で似たような症状が別のバージョンでもあったようですが、解決されたのでしょうか?
もし何か情報ありましたら御教授願います。
56 : tkfm : 2007/07/23 23:39:12 ID:gDbGWr1mU
>mocaさんへ

私もLolipopにサーバーを借りているので試してみました。
結果はmocaさんと全く同じ状態です。
同じ組み合わせでXREAでは動いているのですがね...

どうも気になるのは、「=&」を「=」に書き換えたときに、
ちゃんと動いてるXREAではWPの本来のURLでアクセスすると、
通常通り全ての記事が見れるんですよ。
でも、Lolipopだと「検索結果:該当する記事は見つかりませんでした。」となる...

またその時WPの管理画面にログインしても、同様に投稿が1つもリストに出てこない。
従って、記事の管理が全くできない。

動いているXREAだと、管理画面も通常通り使えるんですよね~

一体、違いはどこに???
57 : moca : 2007/07/24 05:08:38 ID:TyvFhC7O7
>tkfmさんへ

わざわざ確認ありがとうございます。m(__)m
Lolipopで結果が同じとなると、おそらく手順的には私の方と
大差ない様ですね。
となると一番疑わないといけないのはXREAとLolipopのPHP+My
SQL+Apache辺りの動作環境(バージョン)の差でしょうか。

たしかに=&の書き換えを行うとLolipopではwp単体としての動
作も出来なく成ります。まだ時間がなくてWP自体のソースに
手を出していないので何がどうなってるかまでは判らないの
ですが、ここまでで判った内容からすると、XREAでWPがその
まま動く理由はおそらくPHP5を使用しているためでしょう。

PHP4では $hoge = $poge; では$pogeの中にある値が$hogeに
コピーされており、$hoge =& $poge;とする事で、$hogeの実
態が$pogeと同じになる"参照渡し"となっていました。変わっ
てPHP5では $hoge = $poge でも $hoge =& $poge でも参照渡
しの動きに成るようです。

ちなみにPHP3ではそもそも参照渡しが=演算子では出来ない仕様みたいです。

この違いのおかげで、XREAではおそらく=&でも=でも変わり無
く本来のWPのURLでアクセスして通常通り動くという事みたい
ですね。逆にLolipopはPHP4のみ対応なので=&から=に変わる
事でグローバル変数の反映の範囲が変わってしまい、動作し
なくなるんだと思います。

と、、、ここまでは分かったんですが、ここから先はWPそ
のものの動きとIntegratorの動きの絡みの具体的な部分がす
こし見えないと判らなさそうですね^^;

Integratorのソースだけ見てもなんとなく"どのページにいる
かを示す"グローバル変数の値をMODxの受けたURLから取った
値で無理やり埋めて、WPの関数に思ったページを吐かせるん
だろうなーとか、参照代入をやめさせてるのは多分いらない
ところから上書きされないようにするんだろうなーとか。

それくらいの想像しか出来ないですしね・・・

肝心の「なに」を「どうしてる」かまでは分からずじまいw
逆に上の理由で=&を=に書き直してるということはPHP5では
それだけじゃ思ったように動作しないようなきもするし・・・

あれ????w

ちょっとPHPのお勉強がてらソースを追っかけて見ます・・・

58 : ひげ : 2007/09/09 23:43:00 ID:qQKitZ1D4
リソースのファイル管理にて”アップロード機能が使用できません。 - アップロードがサポートされているか、PHPがディレクトリに書込権を有しているかを確認してください”と出てしまいます。
さくらにてmodxを設定しています。
教えてください。
59 : ただの通りすがり : 2008/02/03 01:37:10 ID:DYyb7nd3I
MySQL4.1以降とそれ以前では内部のマルチバイトの扱いが全くと言っていいほど異なるため、「SET NAMES ~」だけでは問題が解決しないことが多い。
これで解決するのはクライアントライブラリがサーバープロセスに対して(3306ポートやUNIXsocket等で)リクエストするSQLにマルチバイトが含まれるときだけ。リザルトにマルチバイトが含まれるときに正常に受け取るためには「SET CHARACTER SET ~」も必要。マニュアルの以下を参照のこと。
http://dev.mysql.com/doc/refman/4.1/ja/charset-connection.html

注意点として、マニュアルには「SET CHARACTER SET ~」が「SET NAMES ~」を含むかのような表記をしているが、実際にはリスエストとリザルトそれぞれのために必要とする、ということ。つまり両方必要であるということ。
60 : ただの通りすがり : 2008/02/03 01:44:35 ID:DYyb7nd3I
補足
バイナリ版かソース版かでは差がないが、Windows版MySQLでは「SET CHARACTER SET ~」を実行しないでも化けない模様。Windows版MySQLのソースは追いかけていないので詳細は不明。
スレッドを表示 全部

レス投稿

名前: メール:
内容: