Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.

Форум Флудильня Обо всем Список товаров - сетка и лист


Digital Shiva (romaromk) 1314 июня, четверг

разметка
Код
<div id="wrapper">
<div id="navigation">
<a href="#" id="list">Лист</a>
<a href="#" id="grid">Сетка</a>
</div>
<div id="products">
<div class="product">
<div class="wrapper">
<div class="image">Картинка товара</div>
<div class="description">

Показать весь код
<div>Название товара</div>
<p>Описание товара.</p>
</div>
</div>
</div>
</div>
</div>


js
Код
$(function() {
var cc = $.cookie('list_grid');
if (cc == 'g') {
$('#products').addClass('grid');
} else {
$('#products').removeClass('grid');
}
});
$(document).ready(function() {

Показать весь код
$('#grid').click(function() {
$('#products').fadeOut(300, function() {
$(this).addClass('grid').fadeIn(300);
$.cookie('list_grid', 'g');
});
return false;
});

$('#list').click(function() {
$('#products').fadeOut(300, function() {
$(this).removeClass('grid').fadeIn(300);
$.cookie('list_grid', null);
});
return false;
});

});
Спасибо сказали: Александр (shotlandec1980)

Любимов Павел (DIAFAN.CMS) 27114 июня, четверг, редакция 14 июня, четверг

Дополню, что в примере используется cookie. В "коробке" ссылка на скрипт, обрабатывающий куки через Jquery, есть. Но по-умолчанию доступен только для пользователей категории администраторы. Поэтому можно файл /themes/functions/show_js.php вынести в кастомную тему и уже в нём подключение скрипта вынести за рамки условия (строка 53):
Код
if ($this->diafan->_users->useradmin)
{
echo '<script type="text/javascript" src="//yandex.st/jquery/cookie/1.0/jquery.cookie.min.js" charset="UTF-8"></script>
сделав вот так:
Код

echo '<script type="text/javascript" src="//yandex.st/jquery/cookie/1.0/jquery.cookie.min.js" charset="UTF-8"></script>

if ($this->diafan->_users->useradmin)
{
Тогда код, представленный выше, будет работать в полном объёме, запоминая выбор пользователя.

Гарик дополнил про обновления (важное замечание). Да, когда-нибудь /themes/functions/show_js.php может и обновиться. И Вы при такой реализации не получите обновлений. Файл будет, но приоритет будет получать файл в /custom. Поэтому лучше подключать эту библиотеку всё же отдельно в шаблонах до файла со скриптом, написанным выше.
Код
echo '<script src="//yandex.st/jquery/cookie/1.0/jquery.cookie.min.js"></script>
<script>
// код, что выше
.......
</script>
или способом, который советует ниже Гарик.

Dmitry (afonnikov10) 20614 июня, четверг

Ну тогда это решение просто напрашивается в коробку....

Gar|k (DIAFAN.CMS) 2714 июня, четверг, редакция 14 июня, четверг

Лучше создать если нет в теме блок scrpit.php и вставить его через show_include. Изменяя системный show_js, мы осознанно отказываемся от системных обновлений в этом файле.

/themes/blocks/script.php -> <insert name="show_include" file="script">