Вопрос:
Получить текущего пользователя в шаблонах?

Ответ:
В шаблонах доступна переменная $current_user, которая является объектом класса \Users\Model\Orm\User. А значит доступны методы этого класса, которые можно посмотреть в /modules/users/model/orm/user.inc.php

id текущего пользователя: {$current_user.id}

неавторизованный пользователь, также присутствует в этом классе, но у него отрицательный id

В смарти все переменные глобальных массивов можно получить так
Зарезервированная переменная $smarty

Т.е.

{* Получает Ваш IP адрес *}
{$smarty.server.REMOTE_ADDR} 

clients это авторизованные пользователи, а guests это гости. Банеры вроде не кешируются. А этот точно у Вас тот же шаблон.
Кстати пришла идея полегче.
Я забыл, что в шаблоне также доступна переменная $is_auth - авторизован ли пользователь.
Поэтому обёртку можно сделать так, а то лишний запрос делать не хорошо)

{if $is_auth}{* Проверяет авторизован ли пользователь *}

{/if}

Все авторизованные 100% зарегистрированные.

В шаблоне всегда есть переменная с текущим пользователем:

<pre>
{$current_user}
</pre>

Она является объектом пользователя \Users\Model\Orm\User, а это значит, что ему доступны все функции данного класса. Посмотреть класс можно здесь /modules/users/model/orm/user.inc.php.
Соответственно получить группу можно так:

{* Проверка в группе гостей ли пользователь *}
{if $current_user->inGroup('алиас группы')}
   //Группа гостей
{/if}

Для вашей ситуации это алиас guests соотвественно

Поступил вот такой вопрос от пользователя:
Добрый день, подскажите.
Есть макет сайта. По задумке справа должна быть корзина с превью товаров которые, пользователь положил в корзину. Не получается туда их вытащить. Кол-во и итоговую сумму сделал а сами товары не
могу. Пытался сделать как в Шаблоне молодежная. Но при нажатии на ссылку Корзина открывается отдельная страница, а не всплывающее окно

Ответ:
В молодёжной теме когда вы нажимаете купить, то к запросу передаётся параметр floatCart=1 на фронт контроллер, который находится в /modules/shop/controller/front/cartpage.inc.php. В шаблон данный параметр попадает как переменная $floatCart.
Для молодёжной темы оформления, срабатывает шаблон /templates/fashion/moduleview/shop/cartpage.tpl.
Так вот если Вы обратите внимание на верх этого шаблона, то там проверяется данная переменная и если floatCart есть, то шаблон выводится по другой ветке данного шаблона.
Также когда вы обрабатываете нажатие купить, то скрипт который его обрабатывает, знает о том, что нужно отобразить благодаря floatCart. И если это floatCart установлен, то html который возвращается тупо заменяет нижнюю панель.
Посмотреть запрос можно с помощью firebug в FireFox на панели Консоль.
Для того, чтобы понять как работает скрипт вы можете открыть файл /templates/fashion/resource/js/common.js
Для того, чтобы отследить весь ход в javascript с помощью команды console.log();

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

{foreach from=$cart_data.items key=index item=item}

А сам товар, после этого можно получить так:

{assign var=product value=$product_items[$index].product}

$product будет являться объектом класса \Catalog\Model\Orm\Product, т.е. ему доступны все функции из файла /modules/catalog/model/orm/product.inc.php

\Shop\Controller\Block\Cart
это блок контроллер в который передаются только общие данные, посмотреть это можно в /modules/shop/controller/block/cart.inc.php

Так вот получить в шаблоне саму корзину вы можете с помощью публичного статического метода из апи корзины.
Само апи лежит в /modules/shop/model/cart.ini.php
А именно \Shop\Model\Cart::currentCart();

Но так как это шаблон, то нужно воспользоваться нашим плагином для вызова статических методов static_call.
Он расписан здесь:
static_call

Т.е. Вам надо прописать так:

{static_call var=cart callback=['\Shop\Model\Cart','currentCart']}

После чего Вам будет доступна корзина в переменной $cart.
Получить товары можно так:

{assign var=product_items value=$cart->getProductItems()}

Сведения о элементах в корзине так:

{assign var=cart_data value=$cart->getCartData()}

А дальше как в шаблоне отображения корзины:
/templates/fashion/moduleview/shop/cartpage.tpl

Александр пишет:
Александр пишет:

Ну а более красиво это можно замутить с помощью класса со стилем

Да, это можно, только мне нужно было не избавиться от переносов вообще, а чтобы название бренда не рвало.

Аааа. Понятно.

Кому интересно, &nbsp; отображается так, из-за того что при сохранении в БД символ & переводится в код HTML &amp;. Поэтому если хотите чтобы он сработал по предназначению то надо вызвать htmlspecialchars_decode.
Т.е. например для переменной:

{$item|htmlspecialchars_decode}

Ну а более красиво это можно замутить с помощью класса со стилем. К примеру:

.myClass{
   white-space:nowrap; //Запрещает перенос строк
}

И никаких нафиг неразрывных пробелов &nbsp; в названиях.

smile хахаха. Давно мы так не смеялись! smile

2,359

(4 ответов, оставленных в Вопросы по работе с системой)

Ну напишите нам в пожелания, мы рассмотрим.

Напишите нам в support@readyscript.ru мы добавим.

Вы хотите, чтобы у вас просто не переходил текст на следующую строку в шаблоне? я так понял речь идёт о &nbsp; вместо пробелов?

2,362

(4 ответов, оставленных в Вопросы по работе с системой)

1. Наверное да. Но это только лишь догадки. Правду знает лишь поисковик.
2. &quot; это кавычки в кодировке после htmlspecialchars, просто в html & перевёлся в &amp;. Соответственно Ваш надо просто раскодировать строку.
Например так:

{$item|htmlspecialchars_decode}

Вопрос:
Как сделать Ajax запрос блок контроллеру в Readyscript?

Ответ:
Дело в том, что каждый блок контроллер в системе обладает своим уникальным идентификатором. Заботится о нём не надо, т.к. как только вы его вставляете на страницу, то тут же у него генерируется уникальный номер. Это нужно для того, чтобы можно было вставить несколько таких же блок контроллеров или же разных, но чтобы именно тот который Вам нужно отработал.
Соответственно когда вы посылаете запрос, то надо передавать уникальный идентификатор блока в параметре с именем "_block_id".
Т.е. например

 
?_block_id=-345345431

Как его получить?
В шаблоне доступна переменная $this_controller у которой есть метод getBlockId, его то и можно использовать, например так

/путь к блок контроллеру/?_block_id={$this_controller->getBlockId()}

Если вы реализуете форму, то есть метод, который вернёт скрытый input с прописанным id блока, который будет учитываться при отправке формы.

<form>
{$this_controller->myBlockIdInput()}
....
</form>

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

{$router->getUrl('catalog-block-sidefilters', ['_block_id'=>$this_controller->getBlockId(), 'p'=>2])}

Т.е. используя объект $router. В данном примере это страница со списком товаров, и где-то там наш блок контроллер.

И тогда получится адрес примерно такой:

/catalog-block-sidefilters/?_block_id=-342342345&p=2

Ну хорошо, вот мы отправили запрос.
Как понять на стороне контроллера, какому контроллеру пришёл запрос и сделать обработку этого запроса?

Всё просто. В нашем блок контроллере пишем...
Для POST запроса:

if ($this->isMyPost()){
   //Мой POST запрос
}

Для GET запроса:

if ($this->myGet()){
   //Мой GET запрос
}

Если есть вопросы, задавайте.

Вопрос:
Как понять в шаблоне Ajax запрос произошел или нет?
Ответ:
Система сама понимает, когда произошёл AJAX запрос и выдает шаблон обрезанный без обёртки в случает если используется Front контроллер. Однако всё же бывают случаи когда надо узнать это аякс или нет прямо в шаблоне...

В шаблоне доступна переменная $url (объект класса \RS\Http\Request, путь к файлу /core/rs/request.inc.php) у которой есть метод isAjax().
Поэтому проверка будет такая:

{if $url->isAjax()}
  //Это аякс запрос
{/if}
Amigo пишет:

Нашел проблему. Для полноценной работы bootstrap помимо CSS необходимо подключить следующие JS скрипты:

<script src="http://code.jquery.com/jquery-1.11.3.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>

Движок уже использует Jquery версии 1.8.2 который подключается в шаблоне по умолчанию.

{addjs file="jquery.min.js" name="jquery" basepath="common" unshift=true}

Дело в том что используемая версия 1.8.2 уже устарела и bootstrap ее не поддерживает. При попытке подключить версию 1.11.2 или 1.11.3 перестают работать слайдер для фото, очистка кеша и т.д.  Печаль (((

Да, мы позднее обновим эту версию. Но есть возможность как не использовать старую версию, которая конфликтует. В Управление->Настройки системы есть галочка которая отвечает за, то что показывать панель администратора или нет. Если отключить, то конфликта не будет.

Скрипты и css вы правильно подключили. Главное проверить, а подключилась ли у Вас JS бутсрапа. Т.е. тот ли вы путь указали.
Проверьте в FireBug консоли есть ли ошибки.

{literal} для css можно не использовать.
для JS в вашем случае тоже.

Большое спасибо!

Не за что smile

В обычном экспорте выгружается всё. Но если переключится на категорию в Каталоге товаров и выбрать "Расширенный экспорт товаров". То товары будут выгружены только из той категории которую вы выбрали.

Ну отлично! Киньте пожалуйста текст с примерами файлов. Может кому пригодится, если не жалко.

Напишите нам в пожелания в helpdesk.readyscript.ru. Мы рассмотрим.

Разобрались?

Классическая тема адаптивная, поэтому для страницы просмотра товара, вы можете через "Веб-сайт" -> "Конструктор сайта" добавить блок с отображением комментариев к статьям, выбрав в этом блоке в настройках нужный тип комментария.. Для привязки комментариев используется свой тип комментария. Для этого нужно сделать свой модуль в котором будет класс определяющий тип комментария для брендов.

Например Вы можете посмотреть на класс:
/modules/article/model/commenttype/article.inc.php - отвечает за тип комментария к статье.
Соответственно такой класс должен быть и в Вашем модуле, только переделанный под вас.

//Классе который обрабатывает бренды id бренда записывается в следующий роут
$this->router->getCurrentRoute()->brand_id
(Посмотреть можно в файле класса /modules/catalog/front/brand.inc.php)

Соответственно маршрут должен быть catalog-front-brand для вашего класса.

Для собственного модуля почитайте вот эту статью Создаём собственный модуль.
Но по большому счёту Вам надо скопировать и переделать под себя класс типа комментария.

Попробуйте разобраться, если что-то не получится пишите.

Вам для какой темы оформления?

Подобная проблема, не могу установить систему на хостинг ru-centr
Не могу найти модуль filer в панели управления хостингом, может они обновление сделали...

А вы им прозвоните, пусть включат.