Jump to content

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


 Share

Recommended Posts

Всем привет! 

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

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

 

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

Edited by AUS
Link to comment
Share on other sites

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

 

Edited by AUS
Link to comment
Share on other sites

Готов заплатить 10$ за разработку.

А если кому интересно можете добавлять свои предложения :) 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

vkt.thumb.PNG.3ab4498e4e6798e3474ce5b238

Edited by AUS
Link to comment
Share on other sites

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

vkt.thumb.PNG.3ab4498e4e6798e3474ce5b238

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

Link to comment
Share on other sites

  • 3 weeks later...

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

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

Link to comment
Share on other sites

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

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

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


now.JPG

 

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


vk.JPG

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

mix.jpg

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

@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
Link to comment
Share on other sites

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

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

Edited by AUS
Link to comment
Share on other sites

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

Ваш код @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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

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

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

Link to comment
Share on other sites

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

 

{{$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>

 

Link to comment
Share on other sites

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
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Ваша ссылка была автоматически строена.   Отображать как обычную ссылку

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...