Jump to content

Создать Блок вывода последних статей в Блогах (с изображением)

Featured Replies

Posted
comment_87934

Всем привет! 

Существует Стандартный Блок "Последние записи", который выводит настраиваемое количество записей из Блогов.
Хотелось бы добавить в них миниатюру изображения к примеру как желает это Google+ когда публикуешь ссылку на тот же Блог. 

 block.thumb.PNG.ad4ed38fb96fe96579e7b09b    block-1.thumb.PNG.08c7d7e93dbd87dbacd244

 

Такая вот идея. Может кому-то понравится и возьмется за реализацию. 

Edited by AUS

  • Author
comment_88047

Думаю проще будет не менять стандартный Блок, а сделать html код (или быть может php) и вывести с помощью этого плагина:

 

Edited by AUS

comment_88207

Смотрел - знаний моих не хватает определить переменную. В 3.4 IP.Content содержал список всех доступных переменных для блока, такой функционал в 4.0 ещё не реализовали, и не знаю реализуют ли вообще.

comment_88209

Смотрел - знаний моих не хватает определить переменную. В 3.4 IP.Content содержал список всех доступных переменных для блока, такой функционал в 4.0 ещё не реализовали, и не знаю реализуют ли вообще.

​Там явно нет переменной с первой картинкой записи в блоге. Нужно из текста регуляркой вытаскивать. Да и у ТС не вижу на форуме Контента.

  • Author
comment_88210

Значит нужно делать скрипт, как я понимаю. 
Ведь к примеру вставляю url в vk или Google+ они находят изображение и добавляют его. 

vkt.thumb.PNG.3ab4498e4e6798e3474ce5b238

Edited by AUS

comment_88213

Значит нужно делать скрипт, как я понимаю. 
Ведь к примеру вставляю url в vk или Google+ они находят изображение и добавляют его. 

vkt.thumb.PNG.3ab4498e4e6798e3474ce5b238

​У гугла свои алгоритмы. Он почти все сам делает.

  • 3 недели спустя...
  • Author
comment_89248

У гугла свои алгоритмы. Он почти все сам делает.

Это понятно, но тот же VK умеет так же, взять картинку и первый абзац текста. 

  • 1 year later...
  • Author
comment_109270
3 минуты назад, Respected сказал:

Скрины побились, посмотреть бы как сейчас и как нужно

Сейчас данный виджет выглядит вот так:


now.JPG

 

Если взять ссылку на одну из записей Блога и вставить её в VK по получится так:


vk.JPG

А мне нужен некий симбиоз для виджета - примерно вот так что бы выглядело:

mix.jpg

comment_109281
2 часа назад, Respected сказал:

Посмотрю ближе к вечеру

Я также буду очень благодарен, так как искал такое для себя

comment_109293
10 часов назад, AUS сказал:

Я так понимаю механизм oEmbeded надо использовать:


https://habrahabr.ru/post/141303/

 

Перейдите в шаблон blog → front → entry → entryRow и после {{if $orientation == 'horizontal'}} ставьте следующее:

			{{$content = new \DOMDocument;}}
			{{$content->loadHTML( $entry->content() );}}
			{{$src = $content->getElementsByTagName('img')->item(0)->getAttribute('src');}}
			{{\IPS\Output::i()->parseFileObjectUrls( $src );}}
			<a class="ipsAttachLink ipsAttachLink_image" href="{$src}" rel="external nofollow noopener noreferrer" target="_blank" style="display: block; max-width: 400px;" data-ipslightbox><img src="{$src}" class="ipsImage ipsImage_thumbnailed"></a>

Данный код отобразит самую первую картинку из каждой записи блога. За ширину картинки отвечает число 400.

  • Author
comment_109304

@cpt_z3qo вставил код, сохранил, удалил виджет и добавил заново - ни чего не изменилось

код получился таким 

<li class='ipsDataItem'>
	<div class='ipsDataItem_icon ipsPos_top'>
		{template="userPhoto" app="core" params="$entry->author(), 'tiny'" group="global"}
	</div>
	<div class='ipsDataItem_main'>
		<a href="{$entry->url('getLastComment')}" title='{lang="view_this_entry" sprintf="$entry->_title"}' class='ipsType_medium ipsType_break'>{wordbreak="$entry->name"}</a><br>
		<span class='ipsType_blendLinks ipsType_light ipsType_medium ipsType_break ipsContained'>{lang="byline_nodate" htmlsprintf="$entry->author()->link()"} {lang="in"} <a href='{$entry->container()->url()}' class='ipsType_blendLinks'>{$entry->container()->_title}</a></span>
		{{if \IPS\Settings::i()->blog_enable_rating}}
			{template="rating" group="global" location="front" app="core" params="'small', $entry->averageRating(), 5, $entry->memberRating()"} &nbsp;&nbsp;
		{{endif}}
		<span class='ipsType_medium ipsType_reset'>{{if !$entry->num_comments}}<span class='ipsType_light'>{{endif}}<i class='fa fa-comment'></i> {number="$entry->num_comments"}{{if !$entry->num_comments}}</span>{{endif}}</span>
		{{if $orientation == 'horizontal'}}
        {{$content = new \DOMDocument;}}
        {{$content->loadHTML( $entry->content() );}}
        {{$src = $content->getElementsByTagName('img')->item(0)->getAttribute('src');}}
        {{\IPS\Output::i()->parseFileObjectUrls( $src );}}
        <a class="ipsAttachLink ipsAttachLink_image" href="{$src}" rel="external nofollow noopener noreferrer" target="_blank" style="display: block; max-width: 400px;" data-ipslightbox><img src="{$src}" class="ipsImage ipsImage_thumbnailed"></a>
			<div class='ipsType_medium ipsType_richText ipsType_break' data-ipsTruncate data-ipsTruncate-type='remove' data-ipsTruncate-size='2 lines'>
				{$entry->truncated()|raw}
			</div>
		{{endif}}
	</div>
</li>

Сори но у меня путь к шаблону немного другой:

blog - front - widgets - entryRow 

Edited by AUS

  • Author
comment_109305

Уточните пожалуйста - ваш код работает только если виджет в подвале или в шапке, а если сбоку вертикально? 

UPDATE: всё догадался, вставил код выше  {{if $orientation == 'horizontal'}}   и тогда в горизонтальном виджете отобразятся картинки 

Edited by AUS

  • Author
comment_109306

Пока эксперементировал с кодом понял обнаружил проблему - смыйлы воспринимаются за изображение и выдаются в качестве первого рисунка :(
Надо как-то исключить смайлы или брать последнюю картинку а не первую.

Ваш код @cpt_z3qo я вставил после строчки 
 

<a href="{$entry->url('getLastComment')}" title='{lang="view_this_entry" sprintf="$entry->_title"}' class='ipsType_medium ipsType_break'>{wordbreak="$entry->name"}</a><br>

и получил во такую картинку:
 

ASC   Almaty Subaru Club.png

comment_109307
2 часа назад, AUS сказал:

Пока эксперементировал с кодом понял обнаружил проблему - смыйлы воспринимаются за изображение и выдаются в качестве первого рисунка :(
Надо как-то исключить смайлы или брать последнюю картинку а не первую.

Ваш код @cpt_z3qo я вставил после строчки 
 


<a href="{$entry->url('getLastComment')}" title='{lang="view_this_entry" sprintf="$entry->_title"}' class='ipsType_medium ipsType_break'>{wordbreak="$entry->name"}</a><br>

и получил во такую картинку:
 

ASC   Almaty Subaru Club.png

Я извиняюсь, но этой не мой код. мне подсказал администратор запрещённый_сайт.ru

1 час назад, cpt_z3qo сказал:

Я извиняюсь, но этой не мой код. мне подсказал администратор запрещённый_сайт.ru

"одного сайта "

  • Author
comment_109308
34 минут назад, cpt_z3qo сказал:

Я извиняюсь, но этой не мой код. мне подсказал администратор запрещённый_сайт.ru

"одного сайта "

Быть может тут кто-то подскажет :)

  • Author
comment_109490

Предложили такой обработчик что бы исключить смайлы, но что он не завелся 

 

{{$content = new \DOMDocument;}}
{{$content->loadHTML( $entry->content() );}}
{{	$keep_going = true;
	$index_item = 0;
	while($keep_going){
	$src = $content->getElementsByTagName('img')->item($index_item)->getAttribute('src');
	$image = imagecreatefromstring($src);
	$w = imagesx($image);
	$h = imagesy($image);
	if ($w>25 && $h>25)
	$keep_going = false;
	$index_item++;
     }
}}
{{\IPS\Output::i()->parseFileObjectUrls( $src );}}
<a class="ipsAttachLink ipsAttachLink_image" href="{$src}" rel="external nofollow noopener noreferrer" target="_blank" style="display: block; max-width: 223px;" data-ipslightbox><img src="{$src}" class="ipsImage ipsImage_thumbnailed"></a>

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.