We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 2065
    • 2 Posts
    [解決済み]
    ・画像を2枚選択できるようにテンプレート変数を割り当ててある
    ・画像の入力がないケースもある

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

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

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



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

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

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

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

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

          <?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を含めたらリンクを張ることもできますね