Блог
Количество запросов к БД на странице сайта на 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);
});
});


