Новости
- 16.02.2019 - Вышел Shopkeeper 4.0.3
- 05.02.2019 - Symfony для MODX-разработчиков
- 18.01.2019 - Вышел Shopkeeper 4.0.0, Обновлен сайт
- 15.11.2018 - Импорт/экспорт товаров в Shopkeeper 4
- 18.09.2018 - Вышел Shopkeeper v4.0-rc
- 14.09.2018 - Установка и обзор Shopkeeper4
- 29.07.2018 - Бесплатные базы данных MongoDB на 1 год
- 21.07.2018 - Критическая уязвимость MODX <=2.6.4
- 01.06.2018 - Тест производительности Shopkeeper 4
Последние темы
-
Вышел Shopkeeper 4.0.3
Новости1 -
TagManager2 отображает в фильтре удаленные значения TV-полей
Поддержка7 -
Бесплатные базы данных MongoDB на 1 год
Новости7 -
Не добавляется цена товара в корзину.
Поддержка8 -
Пересчет цены в зависимости от параметров
Поддержка3 -
CatalogFill: не работает импорт в таблицу MIGXDB
MODX - Вопросы и обсуждения15 -
TagManager2 при фильтрации на странице, ничего не происходит
Поддержка17 -
Не выводиться ID товара в письме
Поддержка2 -
Несколько значений checkbox для Formit
MODX - Вопросы и обсуждения2 -
Array в теле письма после оформления заказа
Поддержка5 -
Изменения товара на внешней части сайта modx
MODX - Вопросы и обсуждения10 -
tagManager2 отображает в фильтрации значения удаленных товаров
Поддержка1 -
Цена доставки (не получается найти)
Общие вопросы3 -
shopkeeper3 и цена в зависимости от площади
Поддержка9 -
Catalofill выдает 502 ошибку при загрузке 35 000+ позиций
Поддержка13 -
Получить имена и значения всех TV
Поддержка10 -
CatalogFill + MIGX (не shopkeeper)
Поддержка4 -
Symfony для MODX-разработчиков
Новости1 -
Shopkeeper2 другие цены у товаров в зависимости от выбранного способа оплаты
Поддержка7 -
Не добавляет товары через SHK.toCartFromArray
Поддержка4
Изменения товара на внешней части сайта modx
-
Товары созданы в отдельной таблице при помощи migx
Требуется сделать так чтобы изменение товара можно было делать на внешней части сайта формой методом post
Я сделал загрузку пути кеша изображения (phpthumbon)
код html:[[!price? &image_cache_h400=`[[!phpthumbon? &input=`[[+image_cache]]` &options=`h=400&w=500&zc=1&f=jpg`]]` ]]
Код снипета:
$id = $modx->getOption('id', $scriptProperties, 0); $image_cache_h400 = $modx->getOption('image_cache_h400', $scriptProperties, 0); $res = $modx->getObject('ShopContent',$id); $res->set('image_cache_h400', $image_cache_h400); $res->save();
Но сделать так чтобы изменять ячейки в БД с товарами формой не получается.
Помогите разобраться -
Но сделать так чтобы изменять ячейки в БД с товарами формой не получается.
Что конкретно не получается?
-
Не могу понять суть как сделать изменение товара на внешней части сайта через форму методом пост
Или как еще можно сделать?
У меня сайт цветочно магазина и там цена генерируется от состава, а прописывать состав не удобно через админку (manager) так как
состав отдельно прописывается для 3 размеров (mini;midi;vip)
и нужно сделать изменение состава на самом сайте
Код формы таблицы[[!tovaredit]] <form class="form" action="[[*uri]][[*alias]].html" method="post"> <div class="panel-body text-danger"> <div class="table-responsive"> <table class="table table-hover table-striped table-bordered"> <thead> <tr class="warning"> <th>Упаковка</th> <th>mini</th> <th>midi</th> <th>VIP</th> <th></th> </tr> </thead> <tr><th>Шоколад</th> <td><input type="text" class="form-control" name="chocolate" value="[[*chocolate]]"></td> <td><input type="text" class="form-control" name="2chocolate" value="[[*2chocolate]]"></td> <td><input type="text" class="form-control" name="3chocolate" value="[[*3chocolate]]"></td> <td> руб.</td> </tr> <tr><th>Декор</th> <td><input type="text" class="form-control" name="dekor" value="[[*dekor]]"></td> <td><input type="text" class="form-control" name="2dekor" value="[[*2dekor]]"></td> <td><input type="text" class="form-control" name="3dekor" value="[[*3dekor]]"></td> <td> руб.</td> </tr> </tbody> </table> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default">Сбросить</button> <button type="button" class="btn btn-primary" name="tovaredit" value="Редактировать состав">Сохранить изменения</button> </div> </form>
И нужно сделать сниппет который будет отправлять данные в таблицу,
а для кнопки сброс сделать подгрузку данных из таблицы -
сделал все по этому урок
Добавление, редактирование и удаление кастомных объектов
и ничего не получается. -
Во-первых у вас в коде не хватает такого кода
$packageName = 'shop'; $modelPath = $this->modx->getOption('core_path') . 'components/' . $packageName . '/model/'; $modx->addPackage($packageName, $modelPath);
Тут полезный урок:
https://docs.modx.com/revolution/2.x/case-studies-and-tutorials/developing-an-extra-in-modx-revolution-modx-2.1-and-earlier -
Я сделал все как в выше статье которой я указал.
То бишь редактирование товара происходит на отдельной странице.
Получилось сделать страницу редактирования.
Она даже подгоняет данные уже введеные по id
Но создать новый или редактировать не получается -
Что я сделал уже.
Создал папки /core/components/shop/processors/content/
в них создал 3 файла
create.class.php<?php class ShopContentCreateProcessor extends modObjectCreateProcessor { public $classKey = 'ShopContent'; public $objectType = 'object'; public function beforeSet() { if (!$this->modx->user->id) return 'Вам нужно авторизоваться'; $this->setProperty('created_by', $this->modx->user->id); return true; } } return 'ShopContentCreateProcessor';
remove.class.php
<?php class ShopContentRemoveProcessor extends modObjectRemoveProcessor { public $classKey = 'ShopContent'; public $objectType = 'object'; public function beforeRemove() { if (!$this->modx->user->id) return 'Вам нужно авторизоваться'; return true; } } return 'ShopContentRemoveProcessor';
update.class.php
<?php class ShopContentUpdateProcessor extends modObjectUpdateProcessor { public $classKey = 'ShopContent'; public $objectType = 'object'; public function beforeSet() { if (!$this->modx->user->id) return 'Вам нужно авторизоваться'; return true; } } return 'ShopContentUpdateProcessor';
в системных настройках изменил ключ: extension_packages
[{"articles":{"path":"[[++core_path]]components/articles/model/"}},{"shop":{"path":"[[++core_path]]components/shop/model/"}}]
проверил в консоли добавив новую строку
<?php $item = $modx->newObject('ShopContent'); $item->save();
Создал страницу для редактирования товаров с id=73
[[!getContentData]] [[!FormIt? &hooks=`ShopContent,redirect` &redirectTo=`1` &placeholderPrefix=`` &validate=`pagetitle:required` ]] <div class="col-lg-6" style="margin-left: auto; margin-right: auto; float: none;"> [[!+error.process_error:notempty=`<div class="alert alert-dismissable alert-danger"> <button type="button" class="close" data-dismiss="alert">×</button> <strong>Ошибка!</strong> [[!+error.process_error]] </div>`]] </div> <form class="bs-example form-horizontal" action="[[~[[*id]]]]" method="post"> <input type="hidden" value="[[!+id]]" name="content"> <div class="form-group [[!+error.pagetitle:notempty=`has-error`]]"> <label for="pagetitle" class="control-label">Название товара</label> <input type="text" value="[[!+pagetitle]]" class="form-control" id="pagetitle" placeholder="Введите название товара" name="student"> <span class="help-block">[[!+error.pagetitle]]</span> </div> <div class="modal-footer"> <button type="sumbit" class="btn btn-default" name="remove" value="remove" onclick="return confirm('Удалить това?')">Удалить</button> <button type="sumbit" class="btn btn-primary" value="Редактировать состав">Сохранить изменения</button> </div> </form>
создал сниппеты
shopContent<?php if (!$_POST['content']) { $processor = 'content/create'; } else { $_POST['id'] = $_POST['content']; $modx->setPlaceholder('id', $_POST['id']); if ($_POST['remove']) { $processor = 'content/remove'; } else { $processor = 'content/update'; } } $processorProps = array('processors_path' => $modx->getOption('core_path') . 'components/shop/processors/'); $response = $modx->runProcessor($processor, $_POST, $processorProps); if ($response->isError()) { $hook->addError('process_error', $response->getMessage()); return false; } return true;
<?php if ($_GET['content'] && $content = $modx->getObject('ShopContent', $_GET['content'])) { $modx->setPlaceholders($content->toArray()); }
кнопка редактирования товара в прайсе товаров
<a href="[[~73? &content=`[[+id]]`]]"><h3 itemprop="name">[[+pagetitle]]</h3></a>
потом при нажатии на имя в прайсе открывается страница редактирования там она подгоняет данные и выводит название товара, но изменение названия товара и нажатии сохранить. тупо обновляет страницу и все очищает, а данные не сохраняются
-
name="student"
Не вижу где в сниппете ловится это поле.
-
@Andchir Я уже изменил это параметр, но суть не меняется.
При сохранение пишет Страница недоступна HTTP ERROR 500 -
Вроде бы сделал.
Почистив кеш. и заного изменив файлы и все проверив. ошибку так и не понял.
Остался такой еще вопрос как сделать так чтобы при сохранении он переходил на сам товар