DocLister内でphpthumbへパスが渡せない  【解決済み】

質問全般・改善要望
tomozoh
メンバー
メンバー
記事: 2
登録日時: 2018年7月25日(水) 22:41

DocLister内でphpthumbへパスが渡せない

投稿記事by tomozoh » 2018年7月25日(水) 22:56

MODXバージョン Evolution CMS 1.4.4
PHPのバージョン  7.1.19
MySQLのバージョン 5.7.22-log


DocListerで子要素のページに設定している画像[*topics_image*]をphpthumbでサムネイル化して表示したいと考えています。
phpthumb内てテンプレート変数を使ったところどうも参照出来ないのかパスが出力されないらしく、noimageになってしまいます。
#phpthumbを使用せず、[+tv.topics_image+]を出力した場合は正常にパスが出力されます。
なにか良い解決策はありませんでしょうか?よろしくお願いいたします。

コード: 全て選択

[[DocLister?
&dateSource=`pub_date`
&dateFormat=`%Y.%m.%d.`    
&tvList=`topics_image`
&id=`topic`
&paginate=`pages`
&display=`9`
&tpl=`@CODE:<section><a href="[+url+]" id="[+alias+]"><img src="[[phpthumb? &input=`[+tv.topics_image+]` &options=`w=270,h=270,far=C,bg=FFFFFF`]]"></a><br><h3>[+title+]</h3></section>
&pageAdjacents=`4`
&PrevNextAlwaysShow=`1`
&TplNextP=`@CODE:<a href="[+link+]">次へ</a>`
&TplNextI=`@CODE:<a href="[+link+]" class="disabled">次へ</a>`
&TplPrevP=`@CODE:<a href="[+link+]">前へ</a>`
&TplPrevI=`@CODE:<a href="[+link+]" class="disabled">前へ</a>`
&TplPage=`@CODE:<a href="[+link+]" class="page">[+num+]</a>`
&TplCurrentPage=`@CODE:<strong class="current">[+num+]</strong>`
&TplWrapPaginate=`@CODE:<div class="[+class+]">[+wrap+]</div>`
&PaginateClass=`pagination`]]`
mod_kks
メンバー
メンバー
記事: 22
登録日時: 2017年11月04日(土) 01:31

DocLister内でphpthumbへパスが渡せない  【解決済み】

投稿記事by mod_kks » 2018年7月26日(木) 01:58

DocListerには、出力前処理のための「prepare」パラメタが用意されています。このパラメタでphpthumbを呼ぶ
いわゆるラッパースニペットを作成すれば解決できるかなと考えたのですが、同じことをすでに考えている人がいる
ようです。

https://gist.github.com/ydenissov/981dd ... 33e1e45a56

DocListerコールは必要最低限に割愛しますが、こんな感じで呼んで・・・

コード: 全て選択

[[DocLister?
  &prepare=`thumb`
  &tvList=`topics_image`
  &thumbOptions=`w=270,h=270,far=C,bg=FFFFFF`
  &tpl=`@CODE:<section><a href="[+url+]" id="[+alias+]"><img src="[+thumb+]"></a><br><h3>[+title+]</h3></section>`
]]

次にラッパーとなる「thumb」スニペットを作成します。

コード: 全て選択

<?php
$data['thumb'] = $modx->runSnippet('phpthumb', Array(
  'input'  => $data['tv.topics_image'],
  'options'=> $_DocLister->getCFGDef('thumbOptions')
));
return $data;

こんな感じでいけるのではないでしょうか。手元で試した感じではちゃんと表示できているようです。
tomozoh
メンバー
メンバー
記事: 2
登録日時: 2018年7月25日(水) 22:41

DocLister内でphpthumbへパスが渡せない

投稿記事by tomozoh » 2018年7月28日(土) 04:02

mod_kks
ありがとうございます、無事に実現できました!
prepareパラメタ、便利ですね…。大変助かりました。