pagelistで属性で追加された画像を2枚以上表示するカスタムテンプレートを作る

2013年1月13日 at 7:42

concrete5が5.6になって過去のfor文を使ったカスタムテンプレートから新しいforeach文の方に変更する事になりました。
その際、view.phpに解り易く書かれているコードだけでは、ページに紐づけられたを2枚目以降のイメージ属性を取得する事が出来なませんでした。
twitterで「無理!」と言った所、taoさんがサポートしてくれまして、解決しました。
同じ事になっている方も居るかもしれないので、情報共有の為にフォーラムに投稿したいと思います。

元々pagelistのview.phpには、30行目からイメージ属性を取得する方法が、とても解り易く書いてあると思います。
ただ、getAttribute('属性名');がここでは一度しか使えないのか、二枚目の画像は画像はファイルそのものをgetCollectionAttributeValue('属性名');で読んでくる必要があるとの事でした。

なので2枚以上画像を表示する為の手順としては…
上の方にある
$ih = Loader::helper('image');
のコメントアウト状態を解除して


foreach ($pages as $page):
// Prepare data for each page being listed…
$title = $th->entities($page->getCollectionName());
$url = $nh->getLinkToCollection($page);
.
.
//一枚目の画像
$minimg = $page->getAttribute('一枚目の画像属性のハンドル');
$firstimg = $ih->getThumbnail($minimg, 180, 180, false);
//二枚目の画像
$bigimg = $page->getCollectionAttributeValue('二枚目の画像属性のハンドル');
$secondimg = $ih->getThumbnail($bigimg, 700, 700, false); .
.
.


として、出力先のimg src="xxx"のxxx部分に
一枚目には該当する、echo $firstimg->src; をphpで記述。
一枚目には該当する、echo $secondimg->src; をphpで記述。
(どうもコードを書いてしまうと此方に表示出来ないみたいで解りづらい書き方になってしまってすいません)

…とやれば完成です。



私はページ内のメイン画像とサムネイル画像を属性で登録していて、ページリストブロックでサムネイルをクリック時にライトボックスで実画像表示...の様な簡易ギャラリー的な閲覧を出来るページを作りたかったため、2枚取得が必要でした。
http://kyuukan.aisoratei.com/gallery
ただ、concrete5.6が気持ちよく動いてさえくれれば、これは出来なくても…と思っていた所でtaoさんが助け舟を出して下さった次第です。ありがとうございました。


それから、ページ内でその画像属性を呼び出すにはthemeに、
$cpimg = File::getRelativePathFromID($c->getCollectionAttributeValue('イメージ属性ハンドル')->fID);
と記述し、出力先のimg src="xxx"のxxx部分に
echo $cpimg; とphpで記述すればよべます。

一応補足にファイル添付してみました。ひとつ目がテーマ用で二つ目がページリスト用です。

(コード書くとコードとして認識されてしまって表示出来ないみたいなんですが、皆さんコードを書く時はどうやってそれを回避してるんでしょうか?)

タグ:

Re: pagelistで属性で追加された画像を2枚以上表示するカスタムテンプレートを作る

2013年1月17日 at 19:07
書いてくれてありがとうございますー