Sergey T. пишет:

Так и сделал! Обновил таблицы БД, сбросил КЭШ и все ЗАРАБОТАЛО! СПАСИБО! Тема раскрыта и закрыта! smile

Отлично! smile Если возникнут вопросы не стесняемся задавать.

Кстати is_root это просто английское наименование поля в таблице БД из примера. Замените лучше на более приемлемое, для Вашей задачи.
И обновите БД и в товар запишите значение для этого поля.

Надо скорее всего обновить таблицы БД, чтобы длинна 100 символов применилась.

Вы

 'maxLength' => 100

давно поставили?
Может просто, не обновили поле и там осталась длинна 1 символ?
Если да просто обновите таблицы базы данных, кнопкой, как раньше делали.
И в админке у Вас "п" в поле остаётся?

Sergey T. пишет:

1. У них те позиции в фильтрах, которых нет становятся бледно серыми http://e96.ru/sporting_goods/cycle_racing/velosipedy. Если выбрать марку велосипедов Stinger и долистать до фильтра "Цвет", то некоторые из них будут бледные, показывающие то, что товара этой расцветки нет в наличии.
2. Не было в планах реализовать отображение фильтров на лету, как например здесь http://technopoint.ru/catalog/2152/smar … amp;t=1084 Это бы порядочно упростило для пользователя поиск нужного товара.


Будет, всё мы не делаем пока, т.к. хотим переработать характеристики, иначе Ваш сервер повесится, т.к. запрос будет тяжёлый при наличии множнственного выбора, поэтому как решим с этим проблему, то будем делать.

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

Всё абсолютно правильно у Вас.
Вы сначала отфильтровали по одному параметру, потом уточнили запрос по другому параметру. Желтых волейбольных кроссовок у Вас нет. А синие есть и если их выбрать, то Всё будет. Это абсолютно нормально можете посмотреть на e96.ru.
Подгрузки сведений о возможных фильтрах "на зоду" у нас в данном блок контроллере нет.

Исправил статью на форуме в соответствии с последними вехами и добавил строку о namespace, чтобы люди не путались, можете с ней ознакомится здесь.

Всё понятно. Вы не обратили внимание на namespace. А именно:

<?php
namespace Custom\Config;

А namespace должен соответствовать Вашей папке sizes:

<?php
namespace Sizes\Config;

т.к. custom это имя папки модуля который у Вас уже присутствует и там как раз такой namespace в той папке. Система проверяет папки и namespace, если не совпадает, то модуль не может быть установлен. Т.к. система обращается в классу как \Sizes\Config\File.

Что касается файла file.inc.php Мы изменили положение в создании модулей. Сейчас все сведения о модулях хранятся не в функции  getDefaultValues(), а в файле module.xml. Поэтому функцию getDefaultValues можете из класса удалить.

После того как везде поменяете namespace, надо установить модуль и проделать приведённые манипуляции.

Sergey T. пишет:

Что-то не выходит. Не добавляется поле в админке в карточке товара. Что сделал:
1. Создал папку sizes в папке modules
2. Создал папку config в папке sizes, в ней два файла file.inc.php и handlers.inc.php
3. Добавил в них содержимое из того поста, который вы указали
4. Зашел в настройки системы и "исправил структуру БД"

После этих действий в карточке товара на вкладке "основные" ничего не изменилось. Видимо что-то сделал не так.

А вы сам модуль то Ваш установили(Веб-сайт->Настройка модулей)? Без этого не попрёт, т.е. хуки у не установленых модулей не работают. И киньте листинг файлов пожалуйста.
P.S. Если в Веб-сайт->Настройка модулей модуль не присутствует, то сбросьте кэш и обновите страницу.

Ну как там успехи? Есть продвижения?

Вопрос:
Как сделать несколько меню на сайте ReadyScript?

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

Меню в ReadyScript выводится при помощи блок контроллера меню (\Menu\Controller\Block\Menu) у которого есть параметр "корень", т.е. откуда начинать строить меню.

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

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

Вопрос:
При генерации страниц образуются лишние переносы строк в html.
Как убрать лишние переносы строк в шаблонах ReadyScript?

Ответ:
Шаблоны построены на smarty, а это значит, что Вы можете использовать конструкцию {strip} просто обернув её код в шаблоне.
Например так:

{strip}
<ul>
  
   <li>Первая строка</li>
   <li>Вторая строка</li>
 
</ul>
{/strip}

Она уберёт лишние пустые пространства на выходе в готовом html, а коде шаблонов можно сохранить форматирование так, как Вам необходимо.

Бутаков пишет:

Самый просто и быстрый способ, через "Характеристики" товара.

Тоже хорошо, только доставать не удобно)
Плюс лишний запрос, хотя если в карточке товара, то нет

Весь вопрос почти полностью мной был раскрыт в этой теме:
Как добавить поле товару или любому другому объекту в ReadyScript?
Пробуйте

Обращение к полю можно сделать так:

{$product.вашеполевпсевдонимеколонки}

//Например
{$product.yourfield}

Отлично. Мы тоже ждём!)

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

Ответ:
В шаблонах доступна переменная $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,475

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

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