単一の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>