0 Пользователей и 1 Гость просматривают эту тему.
  • 22 Ответов
  • 19353 Просмотров
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Делюсь примером вывода изображений в блоге категорий. Вывод предусматривает автоматическое создание изображений нужных размеров.
Используем изображение полного текста
Спойлер
[свернуть]
Используем изображение вступительного текста
Спойлер
[свернуть]
Корректировка вывода изображения материала( добавляем размер, article, default.php)
Спойлер
[свернуть]
*

Kyrsor

  • Захожу иногда
  • 317
  • 4 / 2
:( Что то упорно не выходит.
Буду пробовать дальше, но чуть левее правее и становится всё очень тяжко!
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код обрабатывает изображения которые вставляются к материалу вкладка Images and links (Изображения и ссылки) в материале
Там есть изображения?
*

Kyrsor

  • Захожу иногда
  • 317
  • 4 / 2
Так смотрим, что сейчас есть:
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

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код обрабатывает изображения которые вставляются к материалу вкладка Images and links (Изображения и ссылки) в материале
Там есть изображения?
Ваш шаблон вывода и без моего кода должен выводить изображение.  (Изображения и ссылки) в материале
Спойлер
[свернуть]
*

Kyrsor

  • Захожу иногда
  • 317
  • 4 / 2
ДЫ и так выводит=)))
Короче меня дезинформировали по этой теме)
Я хочу так что бы с боку если в материале есть картинка она прям с лева от тайтла текста интро и т д выводилась маленькой
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Вот для этого этот код и написан. Удалите, за комментируйте свой вывод и оставьте вышеприведенный с установкой параметров высоты и ширины нужного изображения.
*

Kyrsor

  • Захожу иногда
  • 317
  • 4 / 2
Щас попробую. Спасибо)
Как всё сложно.........
« Последнее редактирование: 17.12.2012, 13:15:13 от Kyrsor »
*

Kyrsor

  • Захожу иногда
  • 317
  • 4 / 2
Это групповое изнасилование мозга)))
Спасибо пост интересный) Но у меня не вышло)
*

NKovalenko.88

  • Новичок
  • 9
  • 0 / 0
Как зилить ссылку на интро изображение для материалов К2 не через админку?
*

kefalia

  • Захожу иногда
  • 68
  • 0 / 0
Добрый вечер! Подскажите, как дописать приведенный Вами код для вывода изображения вступительного текста в блоге категорий так, чтобы изображение в блоге стало ссылкой на содержание статьи? Подобные вопросы уже решались на форуме, однако прикрутить приведенные в других темах решения к написанному Вами коду для меня пока что является невыполнимой задачей :)
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Примерно так
Спойлер
[свернуть]
*

kefalia

  • Захожу иногда
  • 68
  • 0 / 0
Примерно так
Спойлер
[свернуть]

Спасибо! :)
*

Rumboid

  • Новичок
  • 8
  • 0 / 0
Уважаемый 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

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

Rumboid

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

Irsn

  • Захожу иногда
  • 83
  • 0 / 0
А не подскажете, как блоге категорий вывести миниатюры?
« Последнее редактирование: 14.02.2014, 13:54:48 от Irsn »
*

hazyin

  • Захожу иногда
  • 142
  • 1 / 0
Все получилось... и картинки и ссыли на картинках! Автору респект! +1
*

hazyin

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

hazyin

  • Захожу иногда
  • 142
  • 1 / 0
Ну как выход из ситуации - в <div class="img-blog-left> поставить нужные width и height...
*

kik84

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

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Смотрите внимательно макет(шаблон) вывода вашего макета
В приведенном мною решении нет класса "pull-none item-image"
*

kik84

  • Завсегдатай
  • 1350
  • 64 / 4
Смотрите внимательно макет(шаблон) вывода вашего макета
В приведенном мною решении нет класса "pull-none item-image"
Понял, подскажите еще пожалуйста - как поправить путь, чтобы миниатюры создавались не прямо в соответствующей папке, а создавалась внутри папка, например, tmp, и уже в ней лежал jpg.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Блог категории

Автор raynor77

Ответов: 2
Просмотров: 1255
Последний ответ 18.08.2016, 10:05:09
от raynor77
нет картинок в блоге

Автор Коваленко Вадим

Ответов: 4
Просмотров: 1341
Последний ответ 12.05.2016, 01:13:27
от Коваленко Вадим
не работает разделение на колонки в "блоге категорий".

Автор Algemir

Ответов: 7
Просмотров: 9071
Последний ответ 25.04.2016, 08:58:33
от Омск
Разные шаблоны при редактировании материала (на основании родительской категории)

Автор goga_pgasovav

Ответов: 11
Просмотров: 1281
Последний ответ 26.03.2016, 01:05:19
от goga_pgasovav
Компонент к2 категории

Автор 13RUS

Ответов: 1
Просмотров: 862
Последний ответ 18.01.2016, 15:19:44
от 13RUS