Отображение изображений вступительного текста в модуле "список материалов категории""

Тема в разделе "Наполнение", создана пользователем Mad, 01.11.2014.

  1. Mad
    Offline

    Mad Недавно здесь

    Регистрация:
    10.04.2013
    Сообщения:
    29
    Симпатии:
    1
    Пол:
    Мужской
    Я использую в качестве одного из модулей сайта модуль "список материалов категории" и, в общем-то, он меня во всём устраивает, кроме одного - я хочу чтобы кроме вступительного текста он ещё выводил изображения из вступительного текста. Такой опции я нигде не нашёл.

    Как я понимаю, за вывод этого модуля отвечает шаблон в папке modules\mod_articles_category\tmpl

    Я пробовал добавлять туда вот этот код:

    Код (PHP):
    1. $images = json_decode($item->images);
    2. ...
    3. <?php if !empty($images->image_intro) and $params->get('image')) : ?>
    4. <div class="pull-left item-image">
    5. <img src="<?php echo htmlspecialchars($images->image_intro); ?>" />
    6. </div>
    7. <?php endif; ?>


    Результата никакого. Помогите, пожалуйста.

    P.S. Да, я знаю что можно сторонний модуль поставить, но хочется решить всё "своими силами".
     
  2.  
  3. draff
    Offline

    draff Russian Joomla! Team Команда форума

    Регистрация:
    17.01.2011
    Сообщения:
    6 042
    Симпатии:
    519
    Пол:
    Мужской
    А проверял, что лежит в массиве ?
    Код (CODE):
    1. var_dump($item);

    и шаблон модуля переопредели в свой шаблон
     
    Mad нравится это.
  4. Mad
    Offline

    Mad Недавно здесь

    Регистрация:
    10.04.2013
    Сообщения:
    29
    Симпатии:
    1
    Пол:
    Мужской
    Код (PHP):
    1. echo var_dump($item->images);

    Показывает:
    Код (PHP):
    1. string(191)"{"image_intro":"images\/biopsy.png","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}"

    При этом
    Код (PHP):
    1. echo var_dump($item->images->image_intro); ?>

    Выдаёт NULL

    Это да, как только отлажу вывод, всё сделаю.
    --- добавлено: 01.11.2014, первое сообщение размещено: 01.11.2014 ---
    О, получилось. Видимо я что-то не так писал при декодировании из JSON.

    Заработал вот такой код:
    Код (PHP):
    1. <?php $images = json_decode($item->images); ?>
    2. <?php if (!empty($images->image_intro)) :?>
    3. <div class="pull-left item-image"><img src="<?php echo htmlspecialchars($images->image_intro); ?>" /></div>
    4. <?php endif; ?>


    Осталось ещё придумать как бы автоматически миниатюры строить и было бы вообще супер.
     
  5. draff
    Offline

    draff Russian Joomla! Team Команда форума

    Регистрация:
    17.01.2011
    Сообщения:
    6 042
    Симпатии:
    519
    Пол:
    Мужской
    echo не нужно при применении var_dump
    Что ты имеешь ввиду ?
     
  6. Mad
    Offline

    Mad Недавно здесь

    Регистрация:
    10.04.2013
    Сообщения:
    29
    Симпатии:
    1
    Пол:
    Мужской
    Ну, чтобы можно было заливать в качестве "вступительного изображения" картинку любого размера, а в "списке материалов" оно бы отображалось нужным мне размером. Пока сделал это через стили, но ведь это не особо красивое решение.
     
  7. draff
    Offline

    draff Russian Joomla! Team Команда форума

    Регистрация:
    17.01.2011
    Сообщения:
    6 042
    Симпатии:
    519
    Пол:
    Мужской
  8. DKraev
    Offline

    DKraev <i>(aka gft)</i>

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    216
    Пол:
    Мужской

    <?php $images = json_decode($item->images); ?>
    <?php if (!empty($images->image_intro)) :
    $image_new = new JImage(htmlspecialchars($images->image_intro));
    $image_new = $image_new->resize(100, 100, false, JImage::SCALE_INSIDE);
    ?>
    <div class="pull-left item-image"><img src="<?php echo $image_new; ?>" /></div>
    <?php endif; ?>



    Сейчас реализовывал эту же задачу, действовать надо немного иначе все таки:

    Код (PHP):
    1. <?php
    2.  
    3.   //создаем новый объект JImage
    4.   $image = new JImage(htmlspecialchars($images->image_intro));
    5.  
    6.   //получаем путь
    7.   $path =  $image->getPath();
    8.  
    9.   //Уменьшаем изображение
    10.   $newimg = $image->resize('250', '240', true, JImage::SCALE_OUTSIDE);
    11.  
    12.   //Сохраняем в ту же папку
    13.   $newimg->toFile($path.'_s.jpg', IMAGETYPE_JPG);
    14.  
    15.   //Выводим
    16.   echo $path.'_s.jpg';
    17.  
    18.   ?>


    JImage::SCALE_FILL - Жестко подгонит под указанный размер
    JImage::SCALE_INSIDE - Высота будет уменьшена до указанной, ширина будет пропорционально уменьшена или увеличена
    JImage::SCALE_OUTSIDE - Ширина будет уменьшена до указанной, высота будет пропорционально уменьшена или увеличена

    http://api.joomla.org/cms-3/classes/JImage.html


    А вот так можно не только уменьшить изображение, но и обрезать его, чтобы у нас фотки всегда были четко указанного размера:

    Код (PHP):
    1. //создаем новый объект JImage
    2.   $image = new JImage(htmlspecialchars($images->image_intro));
    3.   //получаем путь
    4.   $path =  $image->getPath();
    5.   //Уменьшаем изображение
    6.   $newimg = $image->resize('245', '245', true, JImage::SCALE_OUTSIDE);
    7.   //Узнаем растояние от левого края до обрезки
    8.   $left = ($newimg->getWidth()-245)/2;
    9.   // Обрезаем лишнее
    10.      $newimg = $newimg->crop('245', '245', $left, '', true);
    11.   //Сохраняем в ту же папку
    12.   $newimg->toFile($path.'_s.jpg', IMAGETYPE_JPG);
    13.   //Выводим
    14.   echo $path.'_s.jpg';
     
    Последнее редактирование: 13.12.2014
    CB9T и OlegM нравится это.

Поделиться этой страницей

Загрузка...