Список статей блога WebAsyst ShopScript

Список статей блога, честно говоря, в webasyst сделан довольно бестолково. Лично мне больше нравится, как сделано в WordPress — с возможностью убирать часть поста»под кат», т.е. в основном списке публиковать только часть статьи и ссылку «читать дальше» для тех, кто заинтересовался.

Вообще есть один или несколько плагинов, продаваемых умельцами, которые позволяют делать такую ленту с анонсами и даже прикреплять картинку к анонсу. Этот вариант я запомнил и решил, что если быстро ничего не придумаю, то куплю.

Сначала решил, что самое простым решением будет оборачивать часть статьи в DIV и в CSS прописать ему свойство ‘display:none;’. Грубо, но должно получиться. Единственное, что меня остановило — статьи пишу не я, а объяснять как «оборачивать в DIV» мне очень не хочется. И еще контролировать, чтоб вложенность тэгов соблюдалась.

Тогда я обратил внимание, что при написании постов никто не пользуется тэгом HR (горизонтальная линия) и решил, что это будет отличный разделитель. Кнопка для вставки этого тэга есть в стандартном визуальном редакторе, так что проблем у авторов статей возникнуть не должно.

Файл с шаблоном списка статей (/published/SC/html/scripts/templates/news.frontend.list.tpl.html) поменял как-то так: на показ статей там цикл {section}{sectionelse}{/section}. Вот сразу после {section} и добавил пару строк — тут создаются полезные переменные: URL статьи и ссылка «читать дальше».

{assign var=article_url value="?ukey=news&blog_id="|cat:$news_posts[i].NID|set_query_html}
{assign var=readmore value="<p class=\"readmore\"><a href=\""|cat:$article_url|cat:"\">Читать полностью &raquo;</a></p>"}

а там, где выводится текст новости, т.е. просто показывается переменная $news_posts[i].textToPulication, заменил ее на 2 такие строки:

{assign var=textToPublication value=$news_posts[i].textToPublication|regex_replace:"/[\n\r]/iu":""}
{$textToPublication|regex_replace:"/<hr.*>.*/iu":$readmore}

После этого в файле шаблона, который отвечает за показ одной статьи блога (/published/SC/html/scripts/templates/news.frontend.post.tpl.html) добавил код, просто убирающий сам тэг HR. Вместо

{$news_posts[0].textToPublication}

написал вот так:

{$news_posts[0].textToPublication|regex_replace:"/<hr.*>/":""}

Вот и все. Обошлись малой кровью, все довольны, все смеются :)

Опубликовано 14.11.2011 в 03:18 · Автор Сергей · Ссылка
Рубрики: Shop-Script · Теги: