Форум русской поддержки Joomla!® CMS
27.07.2017, 02:28:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Основной курс по Joomla
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Выводим изображения в блоге категории

 (Прочитано 12417 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Fedor Vlasenko
Профи
********

Репутация: +703/-6
Offline Offline

Пол: Мужской
Сообщений: 3834


Все начинается с Value


« : 07.12.2012, 13:30:15 »

Делюсь примером вывода изображений в блоге категорий. Вывод предусматривает автоматическое создание изображений нужных размеров.
Используем изображение полного текста
Показать текстовый блок
Используем изображение вступительного текста
Показать текстовый блок
Корректировка вывода изображения материала( добавляем размер, article, default.php)
Показать текстовый блок
« Последнее редактирование: 19.12.2012, 02:25:40 от Poznakomlus » Записан
 
Kyrsor
Давно я тут
****

Репутация: +4/-2
Offline Offline

Сообщений: 322



« Ответ #1 : 17.12.2012, 00:31:12 »

Sad Что то упорно не выходит.
Буду пробовать дальше, но чуть левее правее и становится всё очень тяжко!
Записан
Fedor Vlasenko
Профи
********

Репутация: +703/-6
Offline Offline

Пол: Мужской
Сообщений: 3834


Все начинается с Value


« Ответ #2 : 17.12.2012, 02:28:07 »

Код обрабатывает изображения которые вставляются к материалу вкладка Images and links (Изображения и ссылки) в материале
Там есть изображения?
Записан
Kyrsor
Давно я тут
****

Репутация: +4/-2
Offline Offline

Сообщений: 322



« Ответ #3 : 17.12.2012, 05:59:28 »

Так смотрим, что сейчас есть:
1. Добавил в blog_item.php код который для intro текста и второй readmore
2. Добавил в default.php после заголовка.
Notice: Trying to get property of non-object in БЛАБЛА_ПУТЬ_К_МОЕМУ_ШАБЛОНУ\warp\systems\joomla\layouts\com_content\category\blog_item.php on line 89
В принципе то это не ошибка, а просто предупреждение, что в строке 57 (в моём случае) пытаются получить свойство несуществующего объекта.
Эта строка if ($imgsrc = $img->image_intro)
Выходит объект это картинка которая уменьшится, но она есть.
blog_item.php:
Код:
<?php
/**
* @package   Warp Theme Framework
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license   http://www.gnu.org/licenses/gpl.html GNU/GPL
*/

// no direct access
defined('_JEXEC') or die;

// Create a shortcut for params.
$params = &$this->item->params;
$images = json_decode($this->item->images);
$canEdit = $this->item->params->get('access-edit');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::core();

?>

<article class="item" data-permalink="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid), true, -1); ?>">
<?php if ($params->get('show_title')) : ?>
<header>

<?php if ($params->get('show_email_icon')) : ?>
<div class="icon email"><?php echo JHtml::_('icon.email', $this->item, $params); ?></div>
<?php endif; ?>

<?php if ($params->get('show_print_icon')) : ?>
<div class="icon print"><?php echo JHtml::_('icon.print_popup', $this->item, $params); ?></div>
<?php endif; ?>

<h1 class="title">
<?php if ($params->get('link_titles') && $params->get('access-view')) : ?>
<a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid)); ?>" title="<?php echo $this->escape($this->item->title); ?>"><?php echo $this->escape($this->item->title); ?></a>
<?php else : ?>
<?php echo $this->escape($this->item->title); ?>
<?php endif; ?>
</h1>

<?php if ($params->get('show_create_date') || ($params->get('show_author') && !empty($this->item->author)) || $params->get('show_category')) : ?>
<p class="meta">

<?php

if ($params->get('show_author') && !empty($this->item->author )) {

$author =  $this->item->author;
$author = ($this->item->created_by_alias ? $this->item->created_by_alias : $author);

if (!empty($this->item->contactid ) &&  $params->get('link_author') == true) {
echo JText::sprintf('COM_CONTENT_WRITTEN_BY', JHtml::_('link', JRoute::_('index.php?option=com_contact&view=contact&id='.$this->item->contactid),$author));
} else {
echo JText::sprintf('COM_CONTENT_WRITTEN_BY', $author);
}

}

if ($params->get('show_create_date')) {
echo ' '.JText::_('TPL_WARP_ON').' <time datetime="'.substr($this->item->created, 0,10).'" pubdate>'.JHtml::_('date', $this->item->created, JText::_('DATE_FORMAT_LC3')).'</time>';
}

if (($params->get('show_author') && !empty($this->item->author )) || $params->get('show_create_date')) {
echo '. ';
}

if ($params->get('show_category')) {
echo JText::_('TPL_WARP_POSTED_IN').' ';
$title = $this->escape($this->item->category_title);
$url = '<a href="'.JRoute::_(ContentHelperRoute::getCategoryRoute($this->item->catid)).'">'.$title.'</a>';
if ($params->get('link_category')) {
echo $url;
} else {
echo $title;
}
}

?>

</p>
<?php endif; ?>
</header>
<?php //Вставляем в файл blog_item.php. Не забываем переопределять на уровне своего шаблона
$img = json_decode($this->item->images);
if ($imgsrc = $img->image_intro)
{
echo '<div class="img-blog">';
$h = 100; //Новая высота изображения
$w = 150; //Новая ширина изображения
$path_parts = pathinfo($imgsrc);
$file_thumb = $path_parts['dirname'].'/'.$path_parts['filename'].'_'.$h.'_'.$w.'.'.$path_parts['extension'];
if (!file_exists($file_thumb) || filemtime($file_thumb) <= filemtime($imgsrc))
{
$image = new JImage($imgsrc);
$new_image = $image->resize($w, $h, true, JImage::SCALE_INSIDE );
$properties = $image->getImageFileProperties($imgsrc);
switch ($properties->mime)
{
case 'image/jpeg':
$type = IMAGETYPE_JPEG;
break;
case 'image/png':
$type = IMAGETYPE_PNG;
break;
case 'image/gif':
$type = IMAGETYPE_GIF;
break;
}
$new_image->toFile($file_thumb, $type);
}
$attr = getimagesize(JURI::base().$file_thumb);
echo JHTML::_('image', $file_thumb, htmlspecialchars($img->image_intro_alt), $attr[3]).'</div>';
}
?>
<?php endif; ?>

<?php

if (!$params->get('show_intro')) {
echo $this->item->event->afterDisplayTitle;
}

echo $this->item->event->beforeDisplayContent;

?>

<div class="content clearfix">
<?php

if (isset($images->image_intro) and !empty($images->image_intro)) {
$imgfloat = (empty($images->float_intro))? $params->get('float_intro') : $images->float_intro;
$class = (htmlspecialchars($imgfloat)!= 'none')? ' class="size-auto align-'.htmlspecialchars($imgfloat).'"' : ' class="size-auto"';
$title = ($images->image_intro_caption)? ' title="'.htmlspecialchars($images->image_intro_caption).'"' : '';
echo '<img'.$class.$title.' src="'.htmlspecialchars($images->image_intro).'" alt="'.htmlspecialchars($images->image_intro_alt).'" />';
}

echo $this->item->introtext;

?>
</div>

<?php if ($params->get('show_readmore') && $this->item->readmore) : ?>

<p class="links">

<?php

if ($params->get('access-view')) {
$link = JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid));
} else {
$menu = JFactory::getApplication()->getMenu();
$active = $menu->getActive();
$itemId = $active->id;
$link1 = JRoute::_('index.php?option=com_users&view=login&Itemid=' . $itemId);
$returnURL = JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid));
$link = new JURI($link1);
$link->setVar('return', base64_encode($returnURL));
}

?>

<a href="<?php echo $link; ?>" title="<?php echo $this->escape($this->item->title); ?>">
<?php //Вставляем в файл blog_item.php. Не забываем переопределять на уровне своего шаблона
$img = json_decode($this->item->images);
if ($imgsrc = $img->image_fulltext)
{
echo '<div class="img-blog">';
$h = 100; //Новая высота изображения
$w = 150; //Новая ширина изображения
$path_parts = pathinfo($imgsrc);
$file_thumb = $path_parts['dirname'].'/'.$path_parts['filename'].'_'.$h.'_'.$w.'.'.$path_parts['extension'];
if (!file_exists($file_thumb) || filemtime($file_thumb) <= filemtime($imgsrc))
{
$image = new JImage($imgsrc);
$new_image = $image->resize($w, $h, true, JImage::SCALE_INSIDE );
$properties = $image->getImageFileProperties($imgsrc);
switch ($properties->mime)
{
case 'image/jpeg':
$type = IMAGETYPE_JPEG;
break;
case 'image/png':
$type = IMAGETYPE_PNG;
break;
case 'image/gif':
$type = IMAGETYPE_GIF;
break;
}
$new_image->toFile($file_thumb, $type);
}
$attr = getimagesize(JURI::base().$file_thumb);
echo JHTML::_('image', $file_thumb, htmlspecialchars($img->image_fulltext_alt), $attr[3]);
echo '</div>';
}
?>
<?php

if (!$params->get('access-view')) {
echo JText::_('COM_CONTENT_REGISTER_TO_READ_MORE');
} elseif ($readmore = $this->item->alternative_readmore) {
echo $readmore;
} else {
echo JText::_('TPL_WARP_CONTINUE_READING');
}

?>
</a>

</p>
<?php endif; ?>

<?php if ($canEdit) : ?>
<p class="edit"><?php echo JHtml::_('icon.edit', $this->item, $params); ?> <?php echo JText::_('TPL_WARP_EDIT_ARTICLE'); ?></p>
<?php endif; ?>

<?php echo $this->item->event->afterDisplayContent; ?>
</article>
« Последнее редактирование: 17.12.2012, 06:12:10 от Kyrsor » Записан
Fedor Vlasenko
Профи
********

Репутация: +703/-6
Offline Offline

Пол: Мужской
Сообщений: 3834


Все начинается с Value


« Ответ #4 : 17.12.2012, 12:25:48 »

Код обрабатывает изображения которые вставляются к материалу вкладка Images and links (Изображения и ссылки) в материале
Там есть изображения?
Ваш шаблон вывода и без моего кода должен выводить изображение.  (Изображения и ссылки) в материале
Показать текстовый блок
Записан
Kyrsor
Давно я тут
****

Репутация: +4/-2
Offline Offline

Сообщений: 322



« Ответ #5 : 17.12.2012, 12:30:21 »

ДЫ и так выводит=)))
Короче меня дезинформировали по этой теме)
Я хочу так что бы с боку если в материале есть картинка она прям с лева от тайтла текста интро и т д выводилась маленькой
Записан
Fedor Vlasenko
Профи
********

Репутация: +703/-6
Offline Offline

Пол: Мужской
Сообщений: 3834


Все начинается с Value


« Ответ #6 : 17.12.2012, 12:43:14 »

Вот для этого этот код и написан. Удалите, за комментируйте свой вывод и оставьте вышеприведенный с установкой параметров высоты и ширины нужного изображения.
Записан
Kyrsor
Давно я тут
****

Репутация: +4/-2
Offline Offline

Сообщений: 322



« Ответ #7 : 17.12.2012, 12:48:09 »

Щас попробую. Спасибо)
Как всё сложно.........
« Последнее редактирование: 17.12.2012, 13:15:13 от Kyrsor » Записан
Kyrsor
Давно я тут
****

Репутация: +4/-2
Offline Offline

Сообщений: 322



« Ответ #8 : 17.12.2012, 21:58:06 »

Это групповое изнасилование мозга)))
Спасибо пост интересный) Но у меня не вышло)
Записан
NKovalenko.88
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 9


« Ответ #9 : 10.07.2013, 11:49:33 »

Как зилить ссылку на интро изображение для материалов К2 не через админку?
Записан
kefalia
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 69


« Ответ #10 : 11.08.2013, 22:14:39 »

Добрый вечер! Подскажите, как дописать приведенный Вами код для вывода изображения вступительного текста в блоге категорий так, чтобы изображение в блоге стало ссылкой на содержание статьи? Подобные вопросы уже решались на форуме, однако прикрутить приведенные в других темах решения к написанному Вами коду для меня пока что является невыполнимой задачей Azn
Записан
Fedor Vlasenko
Профи
********

Репутация: +703/-6
Offline Offline

Пол: Мужской
Сообщений: 3834


Все начинается с Value


« Ответ #11 : 11.08.2013, 22:59:24 »

Примерно так
Показать текстовый блок
« Последнее редактирование: 07.06.2014, 11:34:45 от Fedor Vlasenko » Записан
kefalia
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 69


« Ответ #12 : 16.08.2013, 10:36:08 »

Примерно так
Показать текстовый блок

Спасибо! Azn
Записан
Rumboid
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #13 : 04.11.2013, 13:26:05 »

Уважаемый Fedor Vlasenko, спасибо большое за выложенные Вами коды. У меня получилось в своем шаблоне вывести изображение вступительного текста, но, когда я пытаюсь сделать его кликабельным (вставляя последний в этом топике Ваш код), то получаю на странице ошибку:
Fatal error: Call to a member function get() on a non-object in Z:\home\мой сайт\www\templates\мой шаблон\html\com_content\category\blog_item.php on line 24
Эта строка содержит $imgfloat = (empty($images->float_intro))? $params->get('float_intro') : $images->float_intro;
Подскажите, что не так?
Записан
Fedor Vlasenko
Профи
********

Репутация: +703/-6
Offline Offline

Пол: Мужской
Сообщений: 3834


Все начинается с Value


« Ответ #14 : 04.11.2013, 14:24:49 »

Попробуйте
Код
$imgfloat = (empty($images->float_intro))? $params->float_intro : $images->float_intro;
Записан
Rumboid
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #15 : 07.11.2013, 09:25:52 »

Это изменение действительно делает картинку кликабельной, но, к сожалению, фатально влияет на расположение элементов на странице шаблона. Картинки я смог расположить слева от текста, теперь они снова встали выше него, Футер ушел в верхний правый блок. Пожалуй, я откажусь от идеи сделать картинки кликабельными. Но Вам все равно спасибо за неравнодушие.
Записан
Irsn
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 83


« Ответ #16 : 13.02.2014, 23:15:48 »

А не подскажете, как блоге категорий вывести миниатюры?
« Последнее редактирование: 14.02.2014, 13:54:48 от Irsn » Записан
hazyin
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 122


« Ответ #17 : 26.05.2014, 15:18:52 »

Все получилось... и картинки и ссыли на картинках! Автору респект! +1
Записан
hazyin
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 122


« Ответ #18 : 26.05.2014, 17:27:11 »

Ток вот один косяк нарисовался (((( при сохранении статьи с превьюшкой создается файлик картинки в этой же папке где исходник,  исходник+_ширина_высота. расширение (где высота и ширина - установленные в коде значения)... но.... вот размеры созданного изображения почему-то не соответствуют установленным.... так исходное изображение  с именем 640x428, установлено в коде 100х65, а результат - 94х63... В чем может быть косяк?
Записан
hazyin
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 122


« Ответ #19 : 26.05.2014, 17:32:14 »

Ну как выход из ситуации - в <div class="img-blog-left> поставить нужные width и height...
Записан
kik84
Живу я здесь
******

Репутация: +63/-4
Offline Offline

Сообщений: 1340



« Ответ #20 : 12.04.2017, 17:05:31 »

Fedor Vlasenko, подскажите что не так я сделал: добавил код из "Используем изображение вступительного текста" и выводятся миниатюры из вступительных в <div class="img-blog"> и в <div class="pull-none item-image"> исходные изображения.
Как оставить лишь миниатюры?
Записан
Fedor Vlasenko
Профи
********

Репутация: +703/-6
Offline Offline

Пол: Мужской
Сообщений: 3834


Все начинается с Value


« Ответ #21 : 13.04.2017, 00:52:04 »

Смотрите внимательно макет(шаблон) вывода вашего макета
В приведенном мною решении нет класса "pull-none item-image"
Записан
kik84
Живу я здесь
******

Репутация: +63/-4
Offline Offline

Сообщений: 1340



« Ответ #22 : 13.04.2017, 15:37:05 »

Смотрите внимательно макет(шаблон) вывода вашего макета
В приведенном мною решении нет класса "pull-none item-image"
Понял, подскажите еще пожалуйста - как поправить путь, чтобы миниатюры создавались не прямо в соответствующей папке, а создавалась внутри папка, например, tmp, и уже в ней лежал jpg.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet