最も簡単な親指

典型的なタスクは、画像のカタログに記入し、それぞれにいくつかのサイズを準備し、任意のフィルターを適用することであるように思えますが、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> 



All Articles