Concrete 5.7 - Search box, Display results with thumbnails

Permalink
Hi folks!

First time writing here on formus concrete5.
I am currently building a site which would need the search results (basic search block), to display their respective thumbnails (or custom attribute).
[attached screenshot]

I tried out what was suggested on another discussion, however i guess that is relevant for the 5.6 Version only? :/
http://www.concrete5.org/community/forums/customizing_c5/adding-pag...
It is bugging me for two days now, i better ask if anyone has tackled this with the 5.7 version as well :D

Currently i have created a custom template for a searchblock.
Custom attibute set on pages is 'thumbnail'.
Code as follows for the do_search:
if (isset($do_search) && $do_search) {
  if (count($results) == 0) {
    ?><h4 style="margin-top:32px"><?php echo t('There were no results found. Please try another keyword or phrase.')?></h4><?php
        } else {
          $tt = Core::make('helper/text');
          ?><div id="searchResults"><?php
            foreach ($results as $r) {
              $currentPageBody = $this->controller->highlightedExtendedMarkup($r->getPageIndexContent(), $query);
               $oPage = Page::getById($r->getID());
               $response = $oPage->getAttribute('thumbnail');
               ?><div class="searchResult">
                <img src="<?php echo $response->src ?>" />
                <h3><a href="<?php echo $r->getCollectionLink()?>"><?php echo $r->getAttribute('nome_persona')?></a></h3>
                <p><?php
                  if ($r->getCollectionDescription()) {

1 Attachment

shiroinosaruva5
 
oimel replied on at Permalink Reply
oimel
We did this for 5.7 in a project and it is straightforward: Create a new viewing template for the search block. This isn't a big deal, so where are your problems exactly?
shiroinosaruva5 replied on at Permalink Reply
shiroinosaruva5
Hi,
thanks for answering.

Yeah i created a new template, however it seems like it can't read the pages IDs in order to read each thumbnail.
The above code is a portion of a new template view for the search box. (view.php)

This is the error code it shows up
Fatal error: Call to undefined method Concrete\Core\Page\Page::getID()

So yeah i am currently out of ideas why it doesn't work.

I tried creating a new template file, and added the supposed need code in order to call and show the image thumbnail.

If you could take a look, would be great.

<?php defined('C5_EXECUTE') or die('Access Denied.');
if (isset($error)) {
    ?><?php echo $error?><br/><br/><?php
}
if (!isset($query) || !is_string($query)) {
    $query = '';
}
?><form action="<?php echo $view->url($resultTargetURL)?>" method="get" class="ccm-search-block-form freshnesssearch"><?php
    if (isset($title) && ($title !== '')) {
        ?><h3><?php echo h($title)?></h3><?php
    }
    if ($query === '') {
        ?><input name="search_paths[]" type="hidden" value="<?php echo htmlentities($baseSearchPath, ENT_COMPAT, APP_CHARSET) ?>" /><?php
    } elseif (isset($_REQUEST['search_paths']) && is_array($_REQUEST['search_paths'])) {
        foreach ($_REQUEST['search_paths'] as $search_path) {
pvernaglia replied on at Permalink Reply
pvernaglia
Try $r->getCollectionID() not $r->getID()
shiroinosaruva5 replied on at Permalink Reply
shiroinosaruva5
Alright we have a small improvement with that. :)
Error no longer displaying, however image is not displaying yet.

Perhaps i forgot something like the image::Helper? uhm..

EDIT::

IT NOW WORKS!!
After adjusting the getCollectionID(),
in the IMG tag, i had to call the src in a different way.

Anyhow, this is how it works:

<?php
  foreach ($results as $r) {
    $currentPageBody = $this->controller->highlightedExtendedMarkup($r->getPageIndexContent(), $query);
     $oPage = Page::getById($r->getCollectionID()); //thanks pvernaglia
     ?>
     <div class="searchResult">
       <img src="<?php echo ($oPage->getAttribute('thumbnail')->getRelativePath());?>" />
     </div>
     }>


Thanks again!!
I can now finish up this search block formatting ;)
dantheman replied on at Permalink Reply
I thought I would add this complete code example for including thumbnail images in search results. This works in Concrete5 8.4.2
This code is placed at /application/blocks/search/templates/imageSearch.php
Add a search block to your page → refresh the page → (stay in edit mode) click the search block → Design & Custom Template → click the cog button → choose 'ImageSearch' from the dropdown → Save → Save the page.
You'll need to add some CSS to style it up - you may also want to change the location of the 'thumbnailImage' div in the code.
<?php defined('C5_EXECUTE') or die('Access Denied.');
if (isset($error)) {
    ?><?=$error?><br/><br/><?php
}
if (!isset($query) || !is_string($query)) {
    $query = '';
}
?><form action="<?=$view->url($resultTarget)?>" method="get" class="ccm-search-block-form"><?php
    if (isset($title) && ($title !== '')) {
        ?><h3><?=h($title)?></h3><?php
    }
    if ($query === '') {
        ?><input name="search_paths[]" type="hidden" value="<?=htmlentities($baseSearchPath, ENT_COMPAT, APP_CHARSET) ?>" /><?php
    } elseif (isset($_REQUEST['search_paths']) && is_array($_REQUEST['search_paths'])) {
        foreach ($_REQUEST['search_paths'] as $search_path) {

This website stores cookies on your computer. These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media. To find out more about the cookies we use, see our Privacy Policy.