Jump to content
View in the app

A better way to browse. Learn more.

IPBMafia.ru - поддержка Invision Community, релизы, темы, плагины и приложения

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

Posted

Всем привет! 

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

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

 

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

Edited by AUS

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

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

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

  • Author

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

vkt.thumb.PNG.3ab4498e4e6798e3474ce5b238

Edited by AUS

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

vkt.thumb.PNG.3ab4498e4e6798e3474ce5b238

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

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

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

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


now.JPG

 

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


vk.JPG

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

mix.jpg

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

@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

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

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

Edited by AUS

  • Author

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

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

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
34 минут назад, cpt_z3qo сказал:

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

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

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

  • Author

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

 

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.