Миниатюры для блога. Танцы с бубном
Предлагаю свое решение для вывода миниатюр для блога как в самом блоге, так и в магазине. Если что не так или у кого есть решение проще - отписывайтесь.
Поскольку команда разработчиков не сподобилась дать нам сей безхитростный инструмент отдельным полем, то будем получать первое изображение вставленное в текст.
Пишем хелпер wa-apps/blog/lib/classes/blogimage.class.php
Запрос вывода в блоге {blogimage::getImgSrc($post.text)} выдает нам URL первого изображения вставленного в любую часть текста поста блога.
Для получения очищенного от изображений текста блога используем:
Для вывода тизера без картинок: {$post.text_before_cut|regex_replace:"/(<img.*?>)/":""}
Для вызова текста без тизера: {$post.text|replace:$post.text_before_cut:''}
Для вызова всего текста без картинок: {$post.text|regex_replace:"/(<img.*?>)/":""}
Вот как-то так у меня получилось.
Поскольку команда разработчиков не сподобилась дать нам сей безхитростный инструмент отдельным полем, то будем получать первое изображение вставленное в текст.
Пишем хелпер wa-apps/blog/lib/classes/blogimage.class.php
<?php
class blogimage
{
public static function getImgSrc($data)
{
preg_match_all("/(<img )(.+?)( \/)?(>)/u", $data, $images);
$host = $images[2][0];
if (preg_match("/(src=)('|\")(.+?)('|\")/u", $host, $matches) == 1)
$host = $matches[3];
return $host;
}
}
Запрос вывода в блоге {blogimage::getImgSrc($post.text)} выдает нам URL первого изображения вставленного в любую часть текста поста блога.
Для получения очищенного от изображений текста блога используем:
Для вывода тизера без картинок: {$post.text_before_cut|regex_replace:"/(<img.*?>)/":""}
Для вызова текста без тизера: {$post.text|replace:$post.text_before_cut:''}
Для вызова всего текста без картинок: {$post.text|regex_replace:"/(<img.*?>)/":""}
Вот как-то так у меня получилось.
11 ответов
Может я не понял как это использовать!?
Я создал класс хелпера в папке - wa-apps/blog/lib/classes/ и вызов этой функции {blogimage::getImgSrc($post.text)} вставляю в шаблон вывода списка записей (фаил - stream_posts.html) <div class="text">
{$post.text}
{if $post.cutted}
<a href="{$post.link}">{$post.cut_link_label|default:'[`Continue reading →`]'}</a>
{/if}
</div> вместо {$post.text} ставлю {blogimage::getImgSrc($post.text)}, но картинка не выводится и текст пропадает, остаются только заголовки и "Читать далее".
Я наверно что-то не так делаю.
Может есть плагин, чтобы при написании поста можно было выбрать миниатюру, как в Вардпрессе!?
- конечно есть...
Через плагин "Главная картинка" для блога можно загружать и выдавать миниатюры в любом месте с помощью хелпера:
{if $wa->blog}
{blogMainpicPluginViewHelper::getPostMainpicById($id)}
{/if}
Работает нормально. Единственное что, я не знаю, как обрезать миниатюры нужного размера. Может кто подскажет?
Подскажите как вставить в макет код?
вставляю {blogimage::getImgSrc($post.text)} не работает
если у кого то не заработал этот пример. просто очистите Кеш в инсталяторе (в настройках)
Данный хук позволяет вывести первую фотографию из вашего блога, допустим на главной странице в любом месте (в анонсе)
1) Создайте класс blogImage.class.php с кодом в папке wa-apps/blog/lib/classes/
2) Выведите данный хук в с цикле foreach в любом месте шаблона (например в файле home.html). Тег {$img} можно перемещать в любое место, что и требовалось.
3) Внесите правки в css файлы вашей темы по своих нуждах
Благодарен Гуглу и вот этому ресурсу https://wa-magazin.ru/blog/vyvodim-pervuyu-fotogra...
Для тех, кто в облаке не пойдет. Здесь уже было решение, но на всякий случай еще раз.
Можно использовать "дополнительные параметры" в Мета.
Например.
и вывести в шаблоне блога в stream_posts.html
есть плагин с обрезкой https://www.webasyst.ru/store/...