• mix3084

    со вторым вопросом я разобрался, отображение уже установленных флажков

    [[!If? &subject=`#Женщине#` &operator=`ia` &operand=`[[!+whom:replace=`||==,`]]` &then=`checked`]]
    

    написал в MODX - Вопросы и обсуждения Читать далее
  • mix3084

    Продолжение связано с предыдущим вопросом Изменения товара на внешней части сайта modx

    • Как сделать так чтобы formit принимал несколько значений checkbox?
      есть вызов formit:
    [[!FormIt?  
        &hooks=`shopContent,redirect`
        &redirectTo=`15`
        &validate=`whom:required`
    

    и сама форма:

    <div class="form-group">
        <label for="whom" class="control-label">Для кого</label><br>
        <label class="checkbox-inline">
            <input type="checkbox" id="whom" name="whom" value="#Женщине#" > Женщине
        </label>
        <label class="checkbox-inline">
            <input type="checkbox" id="whom" name="whom" value="#Любимой#" > Любимой
        </label>
        <label class="checkbox-inline">
            <input type="checkbox" id="whom" name="whom" value="#Семье#" > Семье
        </label>
    </div>
    

    при выборе всех 3 значений должно получится значения поля whom:

    #Женщине#||#Любимой#||#Семье#
    

    По итогу сохраняется только 1 параметр, если выбрать все то последний только сохраняется

    • И второй вопрос. как сделать чтобы он отображал что уже установлено?
      делал If:
    [[!If? &subject=`[[!+whom]]` &operator=`IA` &operand=`#Женщине#` &then=`checked`]]
    

    и в самом сниппете менял значение:

    case 'ia':
       $operand = explode('||',$operand);
    

    Но ничего не вышло. Изменить разделить для проверки содержимого в строчке.
    Пытался изучить статью про Formit
    Что то вроде это делал:

    [[!+fi.whom:FormItIsChecked=`#Женщине#`]]
    

    Но ничего не вышло.

    написал в MODX - Вопросы и обсуждения Читать далее
  • mix3084

    Вроде бы сделал.
    Почистив кеш. и заного изменив файлы и все проверив. ошибку так и не понял.
    Остался такой еще вопрос как сделать так чтобы при сохранении он переходил на сам товар

    написал в MODX - Вопросы и обсуждения Читать далее
  • mix3084

    @Andchir Я уже изменил это параметр, но суть не меняется.
    При сохранение пишет Страница недоступна HTTP ERROR 500

    написал в MODX - Вопросы и обсуждения Читать далее
  • mix3084

    Что я сделал уже.
    Создал папки /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>
    

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

    написал в MODX - Вопросы и обсуждения Читать далее
  • mix3084

    Я сделал все как в выше статье которой я указал.
    То бишь редактирование товара происходит на отдельной странице.
    Получилось сделать страницу редактирования.
    Она даже подгоняет данные уже введеные по id
    Но создать новый или редактировать не получается

    написал в MODX - Вопросы и обсуждения Читать далее
  • mix3084

    Не могу понять суть как сделать изменение товара на внешней части сайта через форму методом пост
    Или как еще можно сделать?
    У меня сайт цветочно магазина и там цена генерируется от состава, а прописывать состав не удобно через админку (manager) так как
    состав отдельно прописывается для 3 размеров (mini;midi;vip)
    alt text
    и нужно сделать изменение состава на самом сайте
    0_1549706842702_Screenshot_2.png
    Код формы таблицы

    [[!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>
    

    И нужно сделать сниппет который будет отправлять данные в таблицу,
    а для кнопки сброс сделать подгрузку данных из таблицы

    написал в MODX - Вопросы и обсуждения Читать далее
  • mix3084

    Товары созданы в отдельной таблице при помощи 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();
    

    Но сделать так чтобы изменять ячейки в БД с товарами формой не получается.
    Помогите разобраться

    написал в MODX - Вопросы и обсуждения Читать далее
  • mix3084

    Спасибо. Оставлю решение тут.
    (САМОЕ ГЛАВНОЕ ДЕЛАТЬ ДО ПЕРЕМЕЩЕНИЯ core)
    Снять флажок статичный у файлов которые хранять в core:

    сниппетов:

    • compare
    • coolcaptcha_fihook
    • getProducts
    • userDiscount
    • menuCaching
    • shkOptions
    • shk_render_tv
    • Shopkeeper3
    • tmCatalog
    • tmFilters
    • getRequest

    плагинов:

    • shk_contextSwitch
    • shk_multicurrency
    • clearMenuCaching
    • giftCards
    • tmRefresh

    написал в Поддержка Читать далее
  • mix3084

    @andchir Отключил, ничего не изменилось. На форуме не могу найти похожую запись

    написал в Поддержка Читать далее
  • mix3084

    После перемещения ядра (каталог core) перестали отображаться товары как на сайте так и в админке, а через migx не удалось подключиться к таблице shop. как решить эту проблему? (где прописать новый путь к ядру каталога core)

    Перемещение делал с целью защиты сайта

    Скачал ДЕМО-сайт версию shopkeeper3.2.7pl2 сам САЙТ
    Перенес каталог с ядром MODX (core) за пределы корневого web-каталога, то есть выше по дереву файловой системы: к примеру «/core» вместо «/public_html/core».
    После перенесения каталога отредактировал конфигурационные файлы, указав в них новый путь до ядра MODX:

    • /public_html/config.core.php
    • /public_html/connectors/config.core.php
    • /public_html/manager/config.core.php
    • /core/config/config.inc.php

    В разделе "Пространства имен" проверил чтобы было указано так:
    shopkeeper3

    • Путь к ядру: {core_path}components/shopkeeper3/
    • Путь к активам: {assets_path}components/shopkeeper3/

    Открыл в админке "Медиа" -> "Источники файлов" -> "Компоненты - Редактировать".
    Изменил параметры "basePath" и "baseUrl",
    то есть: к примеру «{core_path}components/» вместо «/core/components/».

    написал в Поддержка Читать далее
  • mix3084

    @Andchir
    <?xml version="1.0" encoding="UTF-8"?><checkOrderResponse performedDatetime="2016-10-03T15:03:39.653+03:00" code="1" invoiceId="2000000921407" shopId="76141"/>
    Код "1" означает несовпадение пароля. Давайте попробуем изменить его на другое значение. Сгенерируйте его, установите со своей стороны, а затем пришлите мне. Заменю с нашей стороны.
    это ответ яндекса, все проделали и новый пароль попробовали. ответ тот же.

    написал в Поддержка Читать далее
  • mix3084

    @Andchir
    0_1475087380932_Screenshot_1.jpg
    Данные в тех. анкете?
    Или какие еще данные? 😄

    написал в Поддержка Читать далее
  • mix3084

    @Andchir
    на странице после оформления заказа

    [[!Paykeeper2?
    &gateway=`YandexMoney`
    &tpl=`pk_form`
    &orderId=`[[!+shk.id]]`
    &testMode=`1`
    ]]
    

    Чанк стандартный, не изменял.
    Нажимаю купить. ввожу mail mixture3084@gmail.com
    проиходит проверка и кидает на яндекс а там
    0_1475000104598_Screenshot_1.jpg
    в настройках paykeepera
    0_1475000246819_Screenshot_2.jpg

    написал в Поддержка Читать далее
  • mix3084

    @Andchir выслали индетификатор и номер ветрины для тестового платежа. Ввел данные в настройку paykeeper и пароль для платежей. И после оформления заказа и оплаты кидает на яндекс и там написано техническая ошибка. Вот сайт грин-сити.рф

    написал в Поддержка Читать далее
  • mix3084

    @Andchir
    В документации написано
    price - Цена товара. Если указывается productId, то цену указывать не нужно.
    Поэтому я и добавил, так как у меня не указывается productId, а только orderId

     &price=`[[!+shk.price]]`
    

    Или тут тоже можно не указывать price?

    написал в Поддержка Читать далее
  • mix3084

    изменил чанк pk_form
    Запуск кнопки "Купить" сделал скриптом

    <script>
      window.onload = function myd() {
      document.getElementById('buttonStart[[+sid]]').click()
      };
    </script>
    

    Ввод mail с формы в корзине [[!+shk.email]]
    Присвоил id кнопке "оплатить" buttonPay[[+sid]]
    И нажатие ее тоже автомат

    <script>
      window.onload = function myd() {
      document.getElementById('buttonPay[[+sid]]').click()
      };
    </script>
    

    Жду теперь данные от яндекса, чтобы проверить.
    Сработает все правильно?

    написал в Поддержка Читать далее
  • mix3084

    На странице "Спасибо" вставил вызов оплаты

    [[!Paykeeper2?
    &gateway=`YandexMoney`
    &tpl=`pk_form`
    &orderId=`[[!+shk.id]]`
    &price=`[[!+shk.price]]`
    ]]
    

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

    написал в Поддержка Читать далее