典型的なタスクは、画像のカタログに記入し、それぞれにいくつかのサイズを準備し、任意のフィルターを適用することであるように思えますが、modxには適切でシンプルで便利なツールが見つかりません。
単一のtvと指定されたパラメーターに基づくシンプルなphpThumbジェネレーターの実装。
呼び出し例 [!thumb?path = `[+ thumb +]`&size = `320x240`&tpl =` thumb`!]
元の画像は、テンプレート変数
[+ thumb +]によって設定されます。 ソースファイルの名前(例:image.jpg)とパラメーター(320x240)からのスニペット[[thumb]]は、新しいファイル(image.320x240.jpg)の単一の名前を形成します。
RewriteRuleルールに従って、イメージディレクトリにアクセスすると、apacheはリクエストを
index.phpハンドラーにリダイレクトします。このハンドラーはファイル名をパラメーターに分割し、phpThumbを使用して目的のイメージを形成します。
スニペット[[サム]]1つの必須パラメーターと2つのオプションパラメーターを受け入れます。
画像ファイル
へのパス
[サイズ]生成された画像のサイズ
[tpl] ofromationパターン
テンプレートに応じて、スニペットはテンプレートに従って発行された結果を返すか、最終
パスの行を返し
ます <?php
if(!empty($ path)){
$サイズ=(空($サイズ))? $サイズ: '320x240';
$ path = explode( '。'、$ path);
array_splice($パス、-1、0、$サイズ);
$ output = $ path = implode( '。'、$ path);
if(!empty($ tpl)){
$ params ['path'] = $ path;
$ output = $ modx-> parseChunk($ tpl、$ params、 '[+'、 '+]');
}
}
$出力を返します。
?>
チャンク{{thumb}}単一のプレースホルダー
[+パス+]を受け入れ
ます <img src = "[+ path +]">
クエリハンドラindex.phpイメージのアドレスを取得し、アドレスを引数に分割し、指定されたパラメーターに従って結果を生成して返します。
<?php
if(!empty($ _ GET ['path'])){
if(!file_exists($ path = $ _GET ['path'])){
$ image = explode( '。'、$ path);
$ size = end(array_splice($ image、-2、1));
if(in_array($ size、array( '100x50'、 '200x100'、 '300x150'))){
$ image = implode( '。'、$ image);
if(file_exists($ image)){
リスト($幅、$高さ)=爆発( 'x'、$サイズ);
require( 'phpthumb.class.php');
$ phpThumb = new phpThumb();
$ phpThumb-> setSourceFilename($ image);
$ phpThumb-> setParameter( 'w'、$ width);
$ phpThumb-> setParameter( 'h'、$ height);
$ phpThumb-> setParameter( 'zc'、 '1');
$ phpThumb-> setParameter( 'q'、 '100');
if($ phpThumb-> GenerateThumbnail()){
if($ phpThumb-> RenderToFile($ path)){
return header( 'Location:'。$ path);
}
}
}
}
}
}
戻りヘッダー(「HTTP / 1.0 404 Not Found」);
?>
Apache .htaccessリダイレクトルール画像処理手順を開始します。
<IfModule mod_rewrite.c>
Rewriteengine on
RewriteCond%{REQUEST_FILENAME}!-F
RewriteCond%{REQUEST_FILENAME}!-D
RewriteRule ^(。*)$ Index.php?パス= $ 1 [L、QSA]
</ IfModule>