• [解決済み] Dittoで一覧ページを作成したときの、テンプレート変数のサムネ#

  • arimedia Reply #1, 2 years, 8 months ago

    Reply
    [解決済み]
    ・画像を2枚選択できるようにテンプレート変数を割り当ててある
    ・画像の入力がないケースもある

    という条件のもと、Dittoにて一覧ページを作成したいのですが、

    1.画像が入力されているときだけclassを指定したタグを挿入したい
    2.自動でサイズを縮小したサムネイルにしたい

    のですが、どのような方法がありますでしょうか?





  • yama Reply #2, 2 years, 8 months ago

    Reply
    まず簡単なほうから。サムネイルは簡単で、phpthumbを使うといいと思います。phpthumbを利用する場合は <img src="phpThumb.php?src=画像のパス&w=100" /> というふうにするだけで簡単にきれいなサムネイル画像を得ることができます。MODxプラグインのDirectResizeを利用できそうな気もするけど、今回は使えないかも。

    少し難しいのは「画像が入力されている時だけxxxxx」といった処理で、これはテンプレート変数の編集画面に実装されているウィジェット的機能ですが、ウィジェットは処理内容が決め打ちになってるので使える場面が意外とありません。今回の件も使えそうにないですが・・こういう場合は簡易なスニペットを組みます。

    たとえばDittoのテンプレート側で <img src="[+画像+]" /> といった記述が最低限必要だと思いますが、この部分をそっくりスニペット処理に追い出して、Dittoのテンプレート側では [[サムネイル処理? &param=`[+画像+]`]] というふうに記述します。そしてスニペット側では $paramに値が渡っているかどうかで処理を分けます・・と、、簡単に説明できると思ったけど一発で説明するのは難しいですね。汗
    (MODx的にはこういうのはわりと得意なパターンですが)


  • arimedia Reply #3, 2 years, 8 months ago

    Reply
    yamaさん

    丁寧な説明本当にありがとうございました!
    phpを知らない私でもなんとかなりました。



  • yama Reply #4, 2 years, 8 months ago

    Reply
    たまたま仕事で同じような相談を受けたので自分も書いてみました。

    <?php
    if($imagePath)
    {
    	$str = '<img src="/ajaxlib/phpthumb/phpThumb.php?src=';
    	$str .= $imagePath . '&w=100&q=90&fltr[]=usm|80|0.5|3&fltr[]=wb&zc=1';
    	$str .= '" />';
    }
    return $str;
    ?>


    phpThumbのデフォルト設定で出力される画像はあまりきれいじゃないのでパラメータを工夫してます。
    q=90でクオリティ90(たぶんデフォルトは70くらい?)、fltr[]=wbでホワイトバランス処理(phpThumbすごい)。

    スニペットに渡すパラメータにリソースIDを含めたらリンクを張ることもできますね