Cropping thumbnail in pagelist

Goal: a PageList with cropped thumbnails - original pics have different shapes -> cropped squares.
Plan is to use a custom template. View.php and view.css copied from core are in application/blocks/page_list/templates/_nameofthecustomtemplate. Theme works otherwise (styles such as red border show) but I can't make cropping work. I know I should learn to code, but could someone help me meanwhile?

I have tried to implement the following instruction in the view.php:

       * 1) Uncomment the "$ih = Loader::helper('image');" line up top.
       * 2) Put in some code here like the following 2 lines:
       *      $img = $page->getAttribute('example_image_attribute_handle');
       *      $thumb = $ih->getThumbnail($img, 64, 9999, false);
       *    (Replace "64" with max width, "9999" with max height. The "9999" effectively means "no maximum size" for that particular dimension.)
       *    (Change the last argument from false to true if you want thumbnails cropped.)
       * 3) Output the image tag below like this:
       *      <img src="<?php echo $thumb->src ?>" width="<?php echo $thumb->width ?>" height="<?php echo $thumb->height ?>" alt="" />

I just can't figure out the right place. The following version (I've tried in several ways) does not break my site, but it does not work either....

(below is the first part of code - mangled version, my changes commented )

defined('C5_EXECUTE') or die("Access Denied.");
$th = Loader::helper('text');
$c = Page::getCurrentPage();
$dh = Core::make('helper/date'); /* @var $dh \Concrete\Core\Localization\Service\Date */
$ih = Loader::helper('image'); /********** This comes here ????  *********/
<?php if ( $c->isEditMode() && $controller->isBlockEmpty()) { ?>
    <div class="ccm-edit-mode-disabled-item"><?php echo t('Empty Page List Block.')?></div>
<?php } else { ?>
<div class="ccm-block-page-list-wrapper">
    <?php if ($pageListTitle): ?>
        <div class="ccm-block-page-list-header">
            <h5><?php echo h($pageListTitle)?></h5>

View Replies:
hutman replied on at Permalink Reply
You should be able to replace this:

$thumbnail = $ih->getThumbnail($img, 100, 100, true);    /**********   ????  *********/
        $thumbnail = false;    
        if ($displayThumbnail) {
               $thumbnail = $page->getAttribute('thumbnail');

With this:

if ($img) {
               $thumbnail = $ih->getThumbnail($img, 100, 100, true);
               echo '<img src="'.$thumb->src.'" width="'.$thumb->width.'" height="'.echo $thumb->height.'" alt="" />';

This is all assuming that the attribute handle of the image attribute you are trying to use is indeed "thumbnail"
PaiviK replied on at Permalink Reply
Thank you - but no success - syntax error, unexpected 'echo' (T_ECHO)
lowtech replied on at Permalink Reply

syntax error, unexpected 'echo' (T_ECHO)

I think an extra echo was left in the code by mistake.


if ($img) {
               $thumbnail = $ih->getThumbnail($img, 100, 100, true);
               echo '<img src="'.$thumb->src.'" width="'.$thumb->width.'" height="'.$thumb->height.'" alt="" />';

PaiviK replied on at Permalink Reply
Nope, just got:
"Argument 1 passed to Concrete\Core\Html\Image::__construct() must be an instance of Concrete\Core\File\File, instance of stdClass given"

This morning I realized I was trying to be too clever - this can be done with styles - and with css I'm more familiar!

Thanks anyway!