検索結果ブロックでページ属性を表示させたい
いつもお世話になっております。
検索結果ブロックへページ属性を表示する方法がわかりません。
ページリストでは、
"<?php foreach ($pages as $page):"
" echo $page->getAttribute('pgp_area');"
" echo $page->getAttribute('pgp_price');"
"?>"
のように記述するとページ属性が表示されるのですが、
検索結果ブロックで同じように記述するとエラーが出てしまいます。
Call to undefined method IndexedSearchResult::getAttribute()
以下、view.php からの抜粋ですが、この中にページ属性を読み込む記述をするとしたら
どのように記述すれば良いのでしょうか?
よろしくお願いいたします。
===============concrete/blocks/search/view.phpより抜粋
"<?php foreach($results as $r) { "
" $currentPageBody = $this->controller->highlightedExtendedMarkup($r->getBodyContent(), $query);?>"
" <div class="searchResult">"
" <h3><a href="<?php echo $r->getPath()?>"><?php echo $r->getName()?></a></h3>"
" <p>"
" <?php if ($r->getDescription()) { ?>"
" <?php echo $this->controller->highlightedMarkup($tt->shortText($r->getDescription()),$query)?><br/>"
" <?php } ?>"
" <?php echo $currentPageBody; ?>"
" <a href="<?php echo $r->getPath(); ?>" class="pageLink"><?php echo $this->controller->highlightedMarkup(rawurldecode($r->getPath()),$query)?></a>"
" </p>"
" </div>"
"<?php }//foreach search result ?>"
Re: 検索結果ブロックでページ属性を表示させたい
ありがとうございます!!
無事取得することができました!
因みにこの辺りの情報はどこを見ると勉強できますか?
designer contentsで作成したテキスト情報を検索ブロックで取得・・・など
やりたいことはまだまだ出てきそうなのですが。
エセ開発者にも理解できそうな(笑)リファレンス、またはTips等の情報が
あればご教示いただければ幸いです。
よろしくお願いいたします。
Re: 検索結果ブロックでページ属性を表示させたい
http://amazon.co.jp/gp/product/4839943842/
http://www.packtpub.com/concrete5-cookbook/book
あと、検索結果や一覧にだす情報であれば、Designer Contentで作ったブロックから情報を取得するのではなく、ページ属性を使うのがセオリーです。そちらに変えることも検討してみてください。DCの情報を出さなきゃいけないのは最終手段と思っていただければ。
takuro hishikawa
Re: 検索結果ブロックでページ属性を表示させたい
ページリストの $pages 場合は Page オブジェクトの配列になります。
getAttributeは、Pageオブジェクトにしかないメソッドですので、検索結果で使いたい場合は、まず Page オブジェクトを取得する必要があります。
と、理屈はこうですが、実際に書くとこのようになります
<?php
$page = Page::getByID($r->getID());
echo $page->getAttribute('example_handle');
?>