Блог
Количество запросов к БД на странице сайта на Webasyst
Предлагаю самый простой способ проверить количество обращений к БД (базе данных) на странице фреймворка Webasyst. При разработке темы дизайна данная проверка крайне необходима. Так как позволяет создать тему максимально оптимизированной и учесть свои ошибки. Но и для владельцев интернет-магазинов информация об обращениях к базе данных также будет важна, чтобы не нагружать хостинг лишними запросами и ускорить свой проект.
Читать далее →Стандартное окно webasyst
Пример как вывести стандартное окно webasyst на фронтэнде
<a href="#" class="ourstores dotted">наши магазины</a>
{literal} <script type="text/javascript"> $('.ourstores').click(function(){ $('<div><h2>Наши магазины</h2><p>Список магазинов</p></div>').waDialog({ 'buttons': '<input type="submit" value="Закрыть" class="button" />', 'height': '300px', 'width': '600px', //'title': 'Наши магазины', onSubmit: function (d) { d.trigger('close'); return false; } }); }); </script> {/literal} {*$wa->globals('isMyAccount')*}{* условие для личного кабинета *} {*$wa->currentUrl(false)*}{* URL текущей страницы относительный ( true - прямой )*}
Демо для плагина "Содержание больших постов"
Плагин для вынесения заголовков в список для больших постов в приложении блог. Необходим облегчить навигацию по странице. Список по заголовкам выводиться наверху страницы
Читать далее →Вывод списка товаров Webasyst
{$products = $wa->shop->productSet("na-drovakh")} {include file="`$wa->shop->themePath('samovar-shop-21')`list-thumbs.html" products=$products}
Регулярные выражения
Примеры регулярных выражений в smarty
{$post.text|regex_replace:"/<(?!h1|\/h1|h2|\/h2|h4|\/h4|h3|\/h3|h5|\/h5)[^>]*>(.*)/":""} {$post.text|regex_replace:"/<p.*?>(.*)<\/p>[^>]/":""} {$post.text|regex_replace:"/<(!?p|\/p)[^>]*>(.*)/":""}
Делаем склонение числительных smarty
Для этого возьмем уже готовую функцию для склонения числительных на PHP, и зарегистрируем её в Smarty, чтобы можно было делать склонение числительных smarty.
//Немного модифицируем первоначальную функцию, чтобы она работала в Smarty function declOfNum($params) { $number=$params['n']; $titles=$params['t']; $cases = array (2, 0, 1, 1, 1, 2); return $number." ".$titles[ ($number%100>4 && $number%100<20)? 2 : $cases[min($number%10, 5)] ]; } //а теперь зарегистрируем в Smarty $smarty->register_function("decl_of_num", "declOfNum");
Готово! Теперь будет работать склонение числительных smarty.
Вызывать будем вот так:
{$titles[0]='товар'} {$titles[1]='товара'} {$titles[2]='товаров'} {decl_of_num n=$count_of_goods t=$titles}
Список по алфавиту smarty
В данном примере массив данных smarty для брендов разбивается на блоки по алфавиту. Поддерживает как английский, так и кириллицу. Данное решение можно использовать практически для любого массива smarty.
Читать далее →Массовое добавление тега description для раздела Webasyst
Часто для больших сайтов встает проблема с добавлением описания в мета-тег Desciption. Предлагаю решение, которое упростит жизнь для многих владельцев сайтов Webasyst. Привожу пример для подстраниц товара.
В теме дизайна добавляете в шаблон в самом верху страницы
product.page.html
{$desc = "`$page.title` для товара `$product.name`"} {$wa->meta('description', $desc)}
Тем самым вы переопределяете стандартный вывод meta Desciption и задаете свои правила формирования тега для всех страниц. Пример как это может выглядеть: <meta name="Description" content="Область применения для товара Светильник подвесной CLG0030160E27" />
Dropdown меню jquery
Данное решение является универсальным. Чтобы заработало, достаточно добавить класс dropdown в нужное место вашей страницы. Всплывающий блок появляется при клике по ссылке. Закрывается по клику вне блока.
Читать далее →Добавить высоту изображению JQuery
Бывают случаи, когда требуется получить высоту изображения, чтобы при загрузке страницы верстка "не прыгала". Это можно решить с помощью скрипта на JQuery.
$(document).ready(function() { $(".promos img").load(function() { var height = $(this).height(); var width = $(this).width(); $(this).css("height", height); }); });