初歩的な質問ではずかしくて、申し訳ないのですが、
ドキュメントのエイリアス変数([*alias*])を配列で取り込みたいのですが、どう記述すれば教えていただけますでしょうか?
$modx->documentObject['alias'] と記述すればいいのかと思いましたが、違いますね。最終的に取得した配列を連想配列にしたいのですが、宜しくお願いします。
もひとつですが、MODxでphpファイルとして出力することはできるのでしょうか?ドキュメントの配列を取り込んだPHPファイルをcronで実行したいのですが、この場合はどうすればいいのでしょうか?
エイリアス名が11111,22222,33333,・・・・
array(
11111,
22222,
33333,
);
を
$arr_pageurl = array(
11111 => "/1111.htm",
22222 => "/2222.htm",
33333 => "/3333.htm",
);
にしたい
記述したコードは
$arr_pageurl = array();
$tmp = $modx->documentObject['alias'];
foreach($tmp as $v){
$arr_pageurl[$v] = $v.'.htm';
}
とするとエラー
またこの配列を別PHPに取りこみたい・・・
宜しくお願いします。
各ドキュメントのエイリアス名を配列として取り込みたい 【解決済み】
Re: 各ドキュメントのエイリアス名を配列として取り込みたい
soushiです。
スニペット書いてみました。
こちらはヒントになりそうでしょうか。
ちなみにMODxのインストール時に入れることができるサンプルサイトで実行した結果はこちら。
http://www.example.com/php_code.htmlの中身 ... でお気をつけください。
また極端な話、DBにアクセスできるのであれば、自力でquery走らせてDBから引っ張ってくるという方法もありますね
スニペット書いてみました。
こちらはヒントになりそうでしょうか。
コード: 全て選択
$list=array();
foreach( $modx->documentListing as $key => $val){
$list[$key] = $modx->makeUrl($val);
}
return '<pre>'.print_r($list,true).'</pre>';
コード: 全て選択
Array
(
[test] => /test.html
[index] => /index.html
[blog] => /blog.html
[request-an-account] => /request-an-account.html
[doc-not-found] => /doc-not-found.html
[search-results] => /search-results.html
[feed.rss] => /feed.rss.html
[features] => /features.html
[geting-help] => /geting-help.html
[design] => /design.html
[login] => /login.html
[blog-login] => /blog-login.html
[thank-you] => /thank-you.html
[contact-us] => /contact-us.html
[blog/article-1126081344] => /blog/article-1126081344.html
[blog/article-1128398162] => /blog/article-1128398162.html
[features/ajax] => /features/ajax.html
[features/menus] => /features/menus.html
[features/cms] => /features/cms.html
[features/extendable] => /features/extendable.html
)
単純に書かれた質問の通りのことをやりたい場合は、ドキュメントの中にphpコードを書いて(もしくはスニペットで出力して)、別のphpでこんなコードを書けばよさそうです。toshi さんが書きました: もひとつですが、MODxでphpファイルとして出力することはできるのでしょうか?ドキュメントの配列を取り込んだPHPファイルをcronで実行したいのですが、この場合はどうすればいいのでしょうか?
コード: 全て選択
$result = eval(file_get_contents('http://www.example.com/php_code.html'));
多分、こういう場合xml形式で出力してあげれば、別phpでSimpleXMLなんかを使って取り込みやすいと思います。toshi さんが書きました: またこの配列を別PHPに取りこみたい・・・
また極端な話、DBにアクセスできるのであれば、自力でquery走らせてDBから引っ張ってくるという方法もありますね
Re: 各ドキュメントのエイリアス名を配列として取り込みたい
こんばんは、soushiさま アドバイス有り難うございます。
スニペット有り難うございます。連想配列として取り込みできました。とても勉強になります。ちなみにですが連想配列じゃなくて 単純に
array(
11111, // エイリアスID
22222, //
33333, //
);
のようにエイリアスIDを配列に設定したい場合はどう書けばいいのでしょうか?
もう一つの質問の件で
MODxでphpファイルとして出力することはできるのでしょうか?ドキュメントの配列を取り込んだPHPファイルをcronで実行・・・
スニペット有り難うございます。連想配列として取り込みできました。とても勉強になります。ちなみにですが連想配列じゃなくて 単純に
array(
11111, // エイリアスID
22222, //
33333, //
);
のようにエイリアスIDを配列に設定したい場合はどう書けばいいのでしょうか?
もう一つの質問の件で
MODxでphpファイルとして出力することはできるのでしょうか?ドキュメントの配列を取り込んだPHPファイルをcronで実行・・・
上記コードでできそうです。 先ほどのエイリアスIDを配列に設定したものを取り込みたいということです。単純に書かれた質問の通りのことをやりたい場合は、ドキュメントの中にphpコードを書いて(もしくはスニペットで出力して)、別のphpでこんなコードを書けばよさそうです。
コード: 全て選択
$result = eval(file_get_contents('http://www.example.com/php_code.html'));
http://www.example.com/php_code.htmlの中身 ... でお気をつけください。
Re: 各ドキュメントのエイリアス名を配列として取り込みたい
soushiです。
前に書いたスニペットを少し変更しました。
中にコメントアウトしている部分があります。
方法1、方法2、方法3の行でコメントアウトをひっくり返すことで、ちょっと違うデータが保存されます。
この中のどれかかなぁと思うのですが、いかがでしょうか。
(個人的に方法3はちょっとナシかな…)
perlでいうリスト見たいな表現ですが、phpではリストはできないので、配列として考えます。toshi さんが書きました: スニペット有り難うございます。連想配列として取り込みできました。とても勉強になります。ちなみにですが連想配列じゃなくて 単純に
array(
11111, // エイリアスID
22222, //
33333, //
);
のようにエイリアスIDを配列に設定したい場合はどう書けばいいのでしょうか?
前に書いたスニペットを少し変更しました。
コード: 全て選択
<?php
$list=array();
foreach( $modx->documentListing as $key => $val){
//$list[$val] = "/$val.html"; //方法1
$list[] = $val; //方法2
//$list[$val] = null; //方法3
}
return '<pre>'.print_r($list,true).'</pre>';
?>
方法1、方法2、方法3の行でコメントアウトをひっくり返すことで、ちょっと違うデータが保存されます。
この中のどれかかなぁと思うのですが、いかがでしょうか。
(個人的に方法3はちょっとナシかな…)
Re: 各ドキュメントのエイリアス名を配列として取り込みたい
soushiさま
方法2で解決しました。有り難うございます。
勉強になりました^^
方法2で解決しました。有り難うございます。
これ便利ですね。ドキュメントでちょこっとPHPコード書けたりするので、色々できそうです。eval()でphpとして実行されます
勉強になりました^^
Re: 各ドキュメントのエイリアス名を配列として取り込みたい
soushiです。
無事に解決されたようで良かったです
ネット上でも調べればちょこちょこと事例や注意喚起のサイトが見つかります。
お気をつけてご利用ください
無事に解決されたようで良かったです
余談ですが、eval()やURLが指定できるfopen()はコードの書き方によっては外部から攻撃できる穴になりやすいコマンドでもあります。toshi さんが書きました:これ便利ですね。ドキュメントでちょこっとPHPコード書けたりするので、色々できそうです。eval()でphpとして実行されます
勉強になりました^^
ネット上でも調べればちょこちょこと事例や注意喚起のサイトが見つかります。
お気をつけてご利用ください