Укажите код, который использовали для удаления товара.
1,751 29.06.2016 11:59:39
Re: Удалить заказ и Удалить товар (13 ответов, оставленных в Вопросы по работе с системой)
1,752 29.06.2016 11:58:33
Re: Создать отдельную страницу (59 ответов, оставленных в Вопросы по разработке модулей и API системы)
Так у Вас же всё получилось?
\RS\Orm\Request строится по тем же правилам, что и обычные SQL запросы. Т.е. если Вы хотите подсоединить таблицу то можно использовать join, тогда у Вас появятся дополнительные колонки.
Обращение к основной таблице всегда с алиасом A.
Например:
$q = $this->api->queryObj();
$q->join(Ваша нужная к присоединению таблица, 'A.полеприсоединия=B.полеприсоединения', 'B') //INNER JOIN
->where(
//Моё нужное условие в уже объединённой таблице
);
Если не знаете как составляется запрос join, то читайте документацию по MySQL:
http://phpclub.ru/mysql/doc/join.html
http://pionick.net/examples/mysql_join
и смотрите видео по запросам к БД в RS. Там тоже есть примеры с JOIN:
https://www.youtube.com/watch?v=n6ufZ2b … L4X2UTC6Aw
1,753 28.06.2016 17:55:08
Re: Создать отдельную страницу (59 ответов, оставленных в Вопросы по разработке модулей и API системы)
Теперь понял. Ну тогда сделайте ещё join у объекта запроса. В чем проблема? У Вас же в $q объект.
1,754 28.06.2016 16:39:10
Re: Создать отдельную страницу (59 ответов, оставленных в Вопросы по разработке модулей и API системы)
Не совсем понял, что хотите сделать. Поясните подробнее
1,755 28.06.2016 13:47:28
Тема: Добавил видеоурок о Конструкторе сайта и работе в нём. (0 ответов, оставленных в Вопросы по работе с системой)
Видео рассказывает как пользоваться конструктором сайта для изменения тем оформления. Рассмотрены аспекты со стороны обычного пользователя. Приведено несколько рабочих примеров для работы в нём. Описан функционал, показаны возможности сеточного вывода блоков. И многое другое.
Видео получилось большим, но и функционала не мало описано, плюс примеры.
Само видео будет здесь:
https://www.youtube.com/watch?v=7HGRpFO … mp;index=9
или в нашем разделе с видеоуроками
1,756 28.06.2016 13:31:35
Re: Создать отдельную страницу (59 ответов, оставленных в Вопросы по разработке модулей и API системы)
Ну тут нужно не совсем то.
Вот эта конструкция:
function __construct()
{
parent::__construct(new \Users\Model\Api()); //Указываем API с которым будет возвращаться вывод
}
Нужно указать здесь API для вывода информации. В Вашем случае, нужно обращение к таблице с элементами заказа, которая описывается в \Shop\Model\Orm\Orderitem. API которое с этими ORM объектами работает в данном случае не существует.
Поэтому Вы создёте у себя класс АПИ и указываете наследование от EntityList, и указать объект, с которым будет работать АПИ. Например:
class MyApi extends \RS\Module\AbstractModel\EntityList
{
function __construct()
{
parent::__construct(new \Shop\Model\Orm\OrderItem, //С какой таблицей через ORM объект работать
array(
'multisite' => false, //Объект является не мультисайтовым (без поля site_id)
'defaultOrder' => 'id DESC' //Сортировка по умолчанию при выборке
));
}
}
Соответственно нужно будет указать своё API для работы CRUD контроллера.
В самом helperIndex можно уточнить запрос по умолчанию, расширив его запросом. В этом классе сам объект апи находится в $this->api. Мы можешь получить объект запроса \RS\ORM\Request через метод queryObj() . Ну например:
function helperIndex()
{
$helper = parent::helperIndex();
$q = $this->api->queryObj();
$q->where(
//Моё нужное условие
);
А сами поля вывода, если Вы заметили описываются здесь:
$helper->setTable(new Table\Element(array(
'Columns' => array(
new TableType\Checkbox('id', array('showSelectAll' => true)),
new TableType\String('id', '№', array('ThAttr' => array('width' => '50'), 'Sortable' => SORTABLE_BOTH, 'CurrentSort' => SORTABLE_DESC)),
new TableType\String('login', t('Логин'), array('href' => $edit_pattern, 'Sortable' => SORTABLE_BOTH, 'linkAttr' => array('class' => 'crud-edit'))),
))));
Поменяйте под себя.
1,757 28.06.2016 12:18:33
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
Всё получится. Не бросайте идею. Вы постучитесь к нам. Я посмотрю, что Вы сделали и скажу, что не правильно. В предыдущем посте идёт полностью рабочий код. Скорее всего, у Вас в POST приходит, что-то не то. Либо Вы чего-то недопоняли.
1,758 28.06.2016 12:15:56
Re: превью статей (15 ответов, оставленных в Вопросы по работе с системой)
Напишите нам в поддержку разберёмся. Всё должно работать.
1,759 27.06.2016 19:22:00
Re: превью статей (15 ответов, оставленных в Вопросы по работе с системой)
Может быть {$item->getPreview($length = 50)} ?
Нет всё правильно, {$item->getPreview(50)}.
$length то Вам зачем?
В Вашем случае, будет лучше если укажите признак показа в виде простого текста:
{$item->getPreview(50, false)}
Судя из страницы, что Вы привели, очень похоже, что там у Вас не тот шаблон выводит, эту страницу. Попробуйте проверить тестово выведя абракодабру.
1,760 27.06.2016 19:16:16
Re: Задвоенные характеристики (3 ответов, оставленных в Вопросы по работе с системой)
Показ прописан в шаблоне Вашего отображения товара. Вроде раньше никого не раздражало . Вы можете поправить шаблон и удалить секцию с выводом характеристики комплектации.
1,761 27.06.2016 16:08:00
Re: Задвоенные характеристики (3 ответов, оставленных в Вопросы по работе с системой)
Ничего здесь задвоеного нет.
У Вас просто показываются сверху текущая выбранная комплектация. Вы можете её переключить и информация сменится. Чуть ниже идут все характеристики. Т.е. все возможные значения.
1,762 27.06.2016 13:55:28
Re: превью статей (15 ответов, оставленных в Вопросы по работе с системой)
Конечно, ведь:
/**
* Возвращает краткий текст заданный пользователем,
* а если он не задан, то сформированный из основного текста
*
* @param integer $length - длинна текста
* @param boolean $html - выводить как HTML?
*/
function getPreview($length = 500, $html = true)
Т.е. {$item->getPreview(Нужная длинна в цифрах)}
1,763 27.06.2016 12:30:48
Re: Создать отдельную страницу (59 ответов, оставленных в Вопросы по разработке модулей и API системы)
Если нужно в публичной части, то:
Вам нужно будет создать свой front контроллер, который выведет нужную информацию. А также объявить маршрут Вашей страницы.
Все маршруты(типы адресов страниц) объявляются в функции getRoute в handlers.inc.php. Вы можете посмотреть его в любом модуле. Этот маршрут будет вести на front контроллер, если набран указанный Вами адрес.
Статья на эту тему вот здесь:
http://readyscript.ru/text-blog/Kak-pra … adyScript/
Например вот такой маршрут:
function init()
{
$this
->bind('getroute'); //Объявляем хук маршрутов
}
/**
* Объявление маршрутов в системе
*
*/
public static function getRoute($routes)
{
//Ваш маршрут
$routes[] = new \RS\Router\Route('custom-front-mycontroller',
'/custom/myurl/', null, t('Мой FRONT контроллер'));
return $routes;
}
Соотственно по пути /custom/myurl/ он будет стучаться в Вам на /modules/custom/controller/front/mycontroller.inc.php
Если нужно в админ панели сделать раздел, то смотрим моё видео о меню.
https://www.youtube.com/watch?v=AeOKRd5 … mp;index=6
И копируем себе в модуль какой-либо админский контроллер, который Вам больше нравится, после чего переделываем под себя.
Попробуйте. Если не будет получаться скажите, только фрагменты кода приведите.
1,764 24.06.2016 18:28:20
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
Вообщем, решил повторить Ваш путь. Да действительно так не отработает, т.к. заказ это единственное место где используется в виду особенностей не update, а updateCartData. который относится к корзине в контроллере OrderCTRL. Поэтому делать надо так:
function init()
{
$this
->bind('controller.afterexec.shop-admin-orderctrl');
}
/**
* Срабатывает после отработки контроллера сохранения заказа
*
* @param string $result_html - готовый HTML, возвращаемый контроллером
*/
public static function controllerAfterexecShopAdminOrderCtrl($result_html)
{
if (isset($_REQUEST['current_val'])){
$config = \RS\Config\Loader::byModule('shop'); //Получам конфиг магазина
$config['current_val'] = \RS\Http\Request::commonInstance()->request('current_val', TYPE_STRING, ""); //Записываем значение из поста
$config->update(); //ЗДЕСЬ есть, т.к. сохраняется другой объект
}
return $result_html;
}
Т.е. вешаясь на отработку контроллера.
1,765 24.06.2016 17:55:26
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
Не может такого быть. Вы видимо, что-то делаете не так. Постучись к нам в онлайн консультант когда мы онлайн, я посмотрю, что Вы делаете.
100% что-то очевидное.
1,766 24.06.2016 16:48:07
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
Андрей.
var_dump($_REQUEST['current_val']); что выдаёт? Если ничего, то выведите весь массив $_REQUEST и посмотрите что у Вас из запроса приходит.
1,767 24.06.2016 15:56:17
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
Переустановка модуля здесь вообще не причём. А current_val у Вас вообще передаётся? Вы как проверяли? var_dump прерывает сохранение заказа?
1,768 24.06.2016 14:58:09
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
Александр
Да вот куда не вставлю var_dump ошибку выдает.
Вставил Ваш код, все равно не работает. Может какая то оошибка в шаблоне самом?
Какую?
1,769 24.06.2016 14:52:18
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
Вот рабочий код:
function init()
{
$this
->bind('orm.beforewrite.shop-order');
}
/**
* Действия перед записью в БД
*
* @param array $data - массив с данными
*/
public static function ormBeforewriteShopOrder($data)
{
if (isset($_REQUEST['current_val'])){
$config = \RS\Config\Loader::byModule('shop'); //Получам конфиг магазина
$config['current_val'] = \RS\Http\Request::commonInstance()->request('current_val', TYPE_STRING, ""); //Записываем значение из поста
$config->update(); //ЗДЕСЬ есть, т.к. сохраняется другой объект
}
}
1,770 24.06.2016 13:58:37
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
Если я правильно понимаю, Вы добавили поле в заказе. Соответственно у Вас сохраняется объект заказа. Где находится ORM объект заказа в модуле shop? в /modules/shop/orm/order.inc.php
Соответственно, мы делаем хук на сохранение заказа, т.е. перед его сохранением, чтобы из поста записать значение. Т.е. делать нужно вот так:
function init()
{
$this
->bind('orm.beforewrite.shop-order');
}
/**
* Действия перед записью в БД
*
* @param array $data - массив с данными
*/
public static function ormBeforewriteShopOrder($data)
{
$config = \RS\Config\Loader::byModule('shop'); //Получам конфиг магазина
$config['current_val'] = \RS\Http\Request::commonInstance()->request('current_val', TYPE_STRING, ""); //Записываем значение из поста
$config->update(); //ЗДЕСЬ есть, т.к. сохраняется другой объект
}
В $data['orm'] - здесь будет ORM объект заказа.
Пробуйте
P.S. Запишу видео скоро по beforewrite и afterwrite, чтобы вопросов не оставалось.
1,771 24.06.2016 13:53:31
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
orm.beforewrite у Вас сработает в тех случаях если вызывался
insert() - запись объекта
или
update() - обновление объекта
Вы сами действия где производите? В каком разделе? я имею ввиду с полем Вашим.
1,772 24.06.2016 13:52:20
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
Попробуйте вот для примера добавить var_dump и сохранить в Веб-сайт->Настройка модулей->Магазин сам конфиг.
1,773 24.06.2016 13:46:48
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
как правильно вывести var_dump(а тут что?);
Всё, что угодно. Например var_dump($data['orm']);. Ваша задача просто понять, сработала у Вас функция перед записью объекта или нет. Для этого мы это пишем и если var_dump сработает, то когда будет сохранять конфиг у нас либо выведется это значение, либо запись прервётся и консоли браузера Вы сможете увидеть, что в запросе появился вывод var_dump. Это нужно в первую очередь для отладки.
Я попробовал хук orm.beforewrite.shop-config-file . Я меня всё сработало.
Этот хук вызывается перед записью ORM объекта в БД.
Зачем вы вызываете $config->update();? Вам нужно лишь установить Ваше значение.
$config->update(); - Вы опять вызовите запись в БД, т.к. этим вы говорите опять сохрани мне конфиг в БД. Т.е. зациклите сохранение до бесконечности.
Вот мой код:
function init()
{
$this
->bind('orm.beforewrite.shop-config-file');
}
/**
* Действия перед записью в БД
*
* @param array $data - массив с данными
*/
public static function ormBeforewriteShopConfigFile($data)
{
$config = $data['orm'];
$config = \RS\Config\Loader::byModule('shop');
$config['current_val'] = \RS\Http\Request::commonInstance()->request('current_val', TYPE_STRING, "");
}
1,774 24.06.2016 12:54:49
Re: HTTP заголовки Last-Modified и If-Modified-Since (7 ответов, оставленных в Вопросы по работе с системой)
Закусило Александр пишет:У нас есть это в пожеланиях. Мы к этому склоняемся, но пока ещё не решили будем делать или нет.
Лучше сделать, это же мелочная доработка... Но плюсы есть!
Это только так кажется
1,775 24.06.2016 11:41:51
Re: URL в модуле контент (27 ответов, оставленных в Вопросы по работе с системой)
В основном все ищут либо по цене, либо по названию. Но хитрые маркетологи придумали "импульсные продажи", т.е. тогда когда нужно продать определённый товар, они подсовывают на первую страницу определённые позиции. Тема не слишком востребованная, т.к. есть лидеры продаж, но тем не менее имеет место быть.