• B
    baklofen

    @andchir скорость работы просто космическая, как сайта, так и админки. Фильтрация - лучше не придумать. Наличие мультикатегорий очень радует! И самое главное как я понимаю всё это масштабируемое в любых пределах? Можно будет где то посмотреть структуру базы? В каком формате хранятся данные?

    написал в Новости Читать далее
  • B
    baklofen

    Почему-то не пускает с ошибкой 500, может что с .htaccess?

    написал в Новости Читать далее
  • B
    baklofen

    @евгений19860 дайте ссылку посмотреть? Можете в лс

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

    Участник @евгений19860 написал в Если нет картинки товара в корзине...:

    [[+img:notempty=<img src="assets/images/[[+img]]">]]

    А если попробовать так:

    [[!+img:notempty=`<img src="assets/images/[[+img]]">`]]
    

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

    По сути потом будет две базы, отдельная для Shopkeeper 4, и отдельная для modx?

    написал в Новости Читать далее
  • B
    baklofen

    Добрый день, есть ли возможность выводить фильтры динамически? Т.е. что бы фильтры строились на основании выводимых товаров MIGX, а не из заранее сохраненных категорий? Т.е. например если выводить на произвольной странице товары из разных категорий, и по этим товарам строить фильтры. Или в какую сторону хотя бы посмотреть или копать можно?

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

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

    1. Создаём родителя "Производители" (например с ID(23))
    2. Создаем несколько дочерних документов (соответственно это сами производители)
    3. В MIGX в нашей конфигурации shop добавляем поле brand (инструкция как это сделать тыц)
    4. Для brand (которое мы создали выше) ставим Input TV type - listbox (Тип TV - выпадающий список с одиночным выбором)
    5. На вкладке Input Options в поле Input Options Value пишем следуещее
    @SELECT pagetitle FROM modx_site_content WHERE parent=23
    

    т.е. селектим все заголовки ресурсов, у которых родитель с ID = 23 (ID того родителя, который мы создали на шаге №1)
    6) Проверяем всё это дело на каком-нибудь товаре, прибиваем ему производителя, и заодно проверим всё это в TM2
    7) Создаём/редактируем шаблон "Каталог производителей", там где нужно выводить товары этого производителя, вызываем getProducts через getPage

    [[!getPage?
        &cache=`1`
        &parents=`13,16,7,8`
        &elementClass=`modSnippet`
        &element=`getProducts`
        &className=`ShopContent`
        &packageName=`shop`
        &limit=`10`
        &tpl=`product_box`
        &where=`{"brand:LIKE":"[[*pagetitle]]"}`
        &pageFirstTpl=` <li class="control"><a [[+classes]] href="[[+href]]">Первая</a></li> `
        &pageLastTpl=` <li class="control"><a [[+classes]] href="[[+href]]">Последняя</a></li> `
    ]]
    <br class="clear" />
    <ul class="pages">
        [[!+page.nav]]
    </ul>
    
    1. Осталось теперь только что бы заработали ссылки, создаём микро-сниппет getUri
    <?php
    $document = $modx->getObject('modResource',array(
        'pagetitle' => $brandname,
        'parent'=> $parentid
    ));
    $field = $document->get('uri');
    return $field;
    

    Т.е. просто получаем URI нашего производителя, что бы потом вставить в ссылку (параметр parentid нужен ,если вдруг вы где то ещё будет такой же pagetitle использовать)
    9) В карточке товара, ставим ссылку на страницу со всеми товарами производителя

    <p class="some-p-class">Производитель: <a href="[[getUri? &brandname=`[[*brand]]` &parentid=`23`]]">[[*brand]]</a></p>
    

    В итоге у нас можно фильтровать по этим производителям в каталоге и вывести все товары одного производителя в отдельном ресурсе.

    Или можно не создавать сниппет и воспользоваться каким нибудь pdoResources или getResources (но по мне проще и быстрее будет сниппет):

    p class="some-p-class">Производитель: <a href="[[~[[pdoResources? &parents=`23` &where=`{"pagetitle:LIKE":"[[*brand]]"}` &tpl=`@INLINE [[+id]]`]]]]</a></p>
    

    написал в Недокументированные решения отдельных задач Читать далее
  • B
    baklofen

    Приветствую. Может кому пригодится. Быстрый просмотр товара не заходя в него, как это сейчас реализовано во многих магазинах типа Wildberries и т.п.

    1. Подключаем к сайту Fancybox 3
    <!-- css -->
    <link rel="stylesheet" type="text/css" href="jquery.fancybox.min.css">
    
    <!-- JS -->
    <script src="//code.jquery.com/jquery-3.2.1.min.js"></script>
    <script src="jquery.fancybox.min.js"></script>
    
    
    1. Устанавливаем плагин из репозитория MODX SwitchTemplate (документация - тыц)
    2. Создаём шаблон "Товары-Fancy"
    3. Заполняем в соответствии с нашими требованиями, что вы будете выводить в быстром просмотре.
      Например:
    <div class="container">
    	<div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6">
                <div lass="some-img">
                	<img src="[[pthumb?input=`assets/catimg/[[*image]]`&options=`w=560&h=560&bg=ffffff&far=1`]]" alt="[[*longtitle]]" >
                </div>
            </div>
            <div class="col-xs-12 col-sm-6 col-md-6">
            	[[*pagetitle]]
            	<div class="row shk-item">
    				<form action="[[~[[*resource_id]]? &scheme=`abs`]][[*alias]]/" method="post">
                        <input type="hidden" name="shk-id" value="[[*id]]" />
                        <input type="hidden" name="shk-name" value="[[*pagetitle]]" />
                        <input type="hidden" name="shk-count" value="1" />
                                
                        <div class="product-price">
                            Цена: <span class="shk-price">[[!*price:shk_curr_rate:num_format]]</span>
                            [[!+shk_currency]]
                        </div>
                                
                        <div class="padding-lr-30">
                            <h5>Дополнительные услуги</h5>
                            [[*param1]]
                        </div>
                                
                        <div class="product-price">
                            <button class="btn btn-lg btn-primary" type="submit" class="shk-but">В корзину</button>
                        </div>
                    </form>
            	</div>
            </div>
        </div>
    </div>
    
    1. Идём в админке Приложения - SwitchTemplate
    2. Кликаем на New Setting
    3. Заполняем (просто пример, каждый заполняет как хочет):

    Setting Name (Имя): quick
    Setting Key (Ключ который мы будем потом приписывать к адресу): quick-link
    Chunk/Template Name (шаблон который будем подставлять): Товары-Fancy (который мы создали в пункте 3
    Template Type: Template
    Cache the Output: Да

    1. Идём в чанк карточки товара product_box и добавляем там ссылку:
    <a data-fancybox data-type="ajax" data-src="[[~[[+resource_id]]?&scheme=`abs`]][[+alias]]/?mode=quick-link" href="javascript:;" data-toggle="tooltip" title="Быстрый просмотр" class="pro-btn quick-view"><span class="lnr lnr-magnifier"></span></a>
    

    в data-src мы указываем ссылку на страницу и ключ ?mode=quick-link что бы плагин открыл нам именно этот товар с нашим шаблоном, который мы указали в настройках

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

    написал в Недокументированные решения отдельных задач Читать далее
  • B
    baklofen

    Приветствую! Натолкните на путь, как можно реализовать рейтинг/оценку + комментирование товаров. Все товары реализованы через MIGX.

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

    Занимался этим вопросом немного.
    Тут как я понял, не всё так просто, не просто отправить чек, а он должен уходить на ОФД (оператор фискальных данных (за который кстати тоже надо платить ежемесячно) который лицензирован у ФНС), только потом он должен уйти в ФНС и к покупателю.
    При всём при этом должна стоять прослойка в виде фискального накопителя, которая стоит тоже огого. В общем искал решение, но бюджетного ничего не нашёл. Многие банки ещё не готовы сами предоставить такую услугу, что бы их эквайринг сам отправлял данные на ОФД. из готовых толковых вариантов это сервис АТОЛа за 42 тр в год. и сервис орандж дата http://www.orangedata.ru/ и всё это увязано с яндекс.кассой.
    Так же есть модуль банк, который предоставляет всё под ключ, только цены на оборудование сумасшедшие и на расчетный счет тоже, и есть он только в крупных городах.

    Лично для себя решил, подключать яндекс кассу, а ждать когда банки начнут предлагать решения, так как знаю, что тинькофф сейчас готовит решение, думаю другие тоже подтянуться.

    Если кто то решит делать сам, то рекомендую позвонить в компанию БУХСОФТ в СПб, они сейчас разрабатывают решение для самостоятельно подключение онлайн касс, вам останется только увязать это со своим магазином.

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

    Как вариант, добавить к товару тв параметры типа chekbox (флажки) с вариантами: 0 > 5000, 5001 > 10000, 10001 > 20001, и стилизовать их под ссылки или как угодно, как тут в примере

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

    Участник @kamuz написал в TagManager 2.3 блокируется / зависает:

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

    В том то и дело что перепроверил все настройки на несколько раз, и консоль браузера ни одной JS ошибки не давала, как и логи MODX.

    Проблема оказалась элементарно в вёрстке шаблона. Решилась простым добавлением

    <div class="clearfix"></div>
    

    между дивами id="filters" и id="products">, хотя сам не понял в чем может быть проблема, в таком исполнении без clearfix

    <section>
        <div class="container">
            <div class="ka-grid-layout-wrap" id="filters">
                <form action="[[~[[*id]]]]" method="get">
                    <input type="hidden" name="page_id" value="[[*id]]" disabled="disabled" />
                    <input type="hidden" name="sortdir" value="asc" />
                    [[tmFilters@filters]]
                </form>                            
            </div>
            <div class="clearfix"></div>
            <div class="row" id="products">
                [[!tmCatalog]]
            </div>
            <div class="kf-pagination pagi-center">
                <ul class="pagination" id="pages">
                    [[!+page.nav]]
                </ul>
            </div>
        </div>
    </section>
    

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

    Добрый день, вот такая ситуация:
    Сайт на modx revo 2.5.4, каталог товаров просто организован ресурсами, TagManager 2.3 настроен, multitags в filters.js прописаны. После того как на странице каталога выбираю любой фильтр, он срабатывает, выдаёт результат и потом наглухо блокируется, никакой флажок ни добавить, ни убавить.
    В чем может быть проблема? До этого пользовал TagManager только с MIGX никогда таких проблем не возникало.

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

    Спасибо всем за помощь, скидываю скрипт, может кому пригодится

    <?php
    $db=mysql_connect("localhost","user","pass") or die ('Ошибка подключения к бд');
    mysql_select_db("database") or die ("База данных не найдена");
    mysql_query("set_client='utf8'",$db);
    mysql_query("set character_set_results='utf8'",$db);
    mysql_query("set collation_connection='utf8_general_ci'",$db);
    
    $result=mysql_query("SELECT o.id,p.name,p.data,o.price,p.options,o.contacts FROM `modx_shopkeeper3_orders` as o LEFT JOIN `modx_shopkeeper3_purchases` as p on `o`.`id`=`p`.`order_id`",$db);
    $file_name=__DIR__.DIRECTORY_SEPARATOR.'export_'.date('Y_m_d_H_i_s').'.txt';
    if($result){
    	$handle=fopen($file_name,'w+');
    	while($row=mysql_fetch_assoc($result)){
    		$params=json_decode($row['options'],true);
    		$data=json_decode($row['data'],true);
    		$contacts=prepareContacts(json_decode($row['contacts'],true));
    		$txt=$row['id'].','.$row['name'].','.$data['weight'].','.$params['param1']['4'].','.$data['articul'].','.$row['price'].','.$contacts['fullname'].','.$contacts['phone'].','.$contacts['email'].'\r\n';
    		fwrite($handle,$txt);
    	}
    	fclose($handle);
    }
    
    function prepareContacts($contacts){
    	$result=[];
    	foreach($contacts as $field){
    		$result[$field['name']]=$field['value'];
    	}
    	return $result;
    }
    ?>
    

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

    Такая же проблема, обновил на 3.2.5 c 3.2.4 и не загружается управление заказами. И перестали открываться товары.

    header("Content-type: application/javascript");
    

    Уже было.

    UPD. переключил php на версию 5.4 и заработало. было на версии 5.6

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

    Помогите разобраться, пытаюсь вывести строку с базы и перевести функцией json_decode, но в итоге получаю пустоту

    $sql = "SELECT options FROM modx_shopkeeper3_purchases where id = 65";
    $json = mysqli_query($connection, $sql) or die("Ошибка запроса: " . mysqli_error($connection));
    while ($row = mysqli_fetch_assoc($json)) {
        $returnValue = json_decode($row,true);
        echo ($returnValue);
    }
    

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

    $sql = "SELECT id, name FROM modx_shopkeeper3_purchases where id = 65";
    $json = mysqli_query($connection, $sql) or die("Ошибка запроса: " . mysqli_error($connection));
    while ($row = mysqli_fetch_assoc($json)) {
        echo $row['id'];
        echo $row['name'];
    }
    

    Получаю вот это: 65 ▒▒▒▒▒▒

    Что конкретно делаю не так?

    Если у кого есть возможность помочь в выгрузке заказов в txt, помогите, буду благодарен материально.

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

    А как сделать так, что бы сразу записывалось в базу кириллицей?

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

    возникла необходимость выгрузки заказов из базы, но обнаружилась вот такая ситуация, в таблице shopkeeper3_purchases в столбцах data и options русские символы выглядят вот так:

    \u0422\u0426 \u0414\u0437\u0435
    

    Если правильно понимаю это коды юникода. Как сделать что бы в базу записывались нормальные символы вместо кодов юникода?

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

    Пришлось опять вернуться к этому вопросу. Может кому пригодится, опишу как это реализовал в своём магазине.

    В общем есть магазин бижутерии, в котором есть изделия, например может быть 6 колец по одному артикулу, но с разным размером, весом и соответственно ценой, также они могут быть раскиданы по магазинам. Нужно было вывести два селекта:

    1-ый - вывод всех магазинов есть в которых есть это кольцо
    2-ой - вывод размеров, которые есть в этом магазине

    Схема такая: открывается карточка товара --> выводится минимальная цена изделия (а так же все характеристики, цена производитель и т.д.) --> выбираешь магазин --> выбираешь размер который есть в этом магазине --> цена меняется --> добавляешь в корзину дальше как обычно

    Товары все выгружается из 1C по ftp на сервер в *.txt, а оттуда в базу

    ......
    $db->exec("LOAD DATA LOCAL
    INFILE '/home/s/shop/new/public_html/ostatki.txt' INTO TABLE `modx_shop_content`
    COLUMNS TERMINATED BY '^'
    (shops, category, articul, material, proba, weight, size, price, oldprice2, sale, image,param1,param2);	
    ");
    ......
    

    1 строка - 1 товар
    в колонку shops выгружаются с базы просто список магазинов в которых есть этот артикул изделия

    ТЦ Центр 1||ТЦ Центр 2||ТЦ Центр 3||ТЦ Центр 4
    

    в колонку param1 выгружаются уже параметры изделий с этим же артикулом
    Магазин==Цена==Размер==Вес

    ТЦ Центр 1==12500==17==1.36||ТЦ Центр 2==13500==18==2.16||ТЦ Центр 3==14500==19==2.26||ТЦ Центр 4==15500==20==2.36
    

    В шаблоне карточки товара подключаю Chained Selects Plugin for jQuery

    <script src="js/jquery.chained.min.js"></script>
    <script type="text/javascript" charset="utf-8">
         $(".sizes").chained(".shops");
    </script>
    

    с помощью param_edit_table вывожу 1-ый необходимый селект с магазинами

    [[param_edit_table?
    &tvValue=`[[*shops]]`
    &tpl=`@CODE:
    <select class="shops">
         <option value="">Выберите магазин</option>
         [[+inner]]
    </select>
     <!--tpl_separator-->
    <option  value="[[+field1]]" name="[[+field1]]">[[+field1]]</option>
    `
    ]]
    

    И так же с помощью param_edit_table вывожу уже размеры

    [[param_edit_table?
    &tvValue=`[[*param1]]`
    &tpl=`@CODE:
    <select class="shk_param sizes" name="param1__[[*id]]" id="param1[[*id]]" onchange="SHK.additOpt(this)">
        <option value="">Выберите размер</option>
        [[+inner]]
    </select>
    <!--tpl_separator-->
    <option  value="[[+idx]]__[[+field2]]" name="[[+field1]]" class="[[+field1]]"[[+selected1]]>[[+field3]]</option>
    `
    ]]
    

    name="[[+field1]]" class="[[+field1]]" - нужны для работы плагина

    В принципе и всё. Если есть более изящные/правильные решения рад буду узнать.

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

    Добрый вечер. Хотел бы уточнить вопрос, возможности стандартными средствами shopkeeper (MIGX) сделать следующую вещь:

    Есть 1 товар с определенным артикулом, который может находиться в нескольких магазинах (реальных магазинах) и иметь разный размер, вес и цену. Т.е. в карточке товара вывести два селекта:

    1-ый селект: выбор магазина, и в зависимости от того, какой магазин выбран, выводятся возможные размеры (которые есть в этом магазине) во втором селекте, а в описании товара просто меняется его вес и цена.

    2-ой селект, который просто выводит все возможные размеры этого артикула из в всех магазинов, и в зависимости от выбранного размера выводит в первом селекте магазины в котором товар есть

    Понимаю, что можно например размер==цена||размер2==цена2||etc можно вывести через param-edit и в наборе параметров шопкипера в настройке changePrice поставит replace, но как можно увязать несколько tv.param между собой не представляю.

    Хотелось бы понять в какую сторону копать, или хотя бы на каике встроенные средства желательно обратить внимание. Прекрасно понимаю как это сделать SQL запросом, но не могу понять как это всё прибить к шопкиперу.

    В данный момент реализован рабочий магазин shopkeeper (MIGX) 1 Товар в 1 магазине, с 1 размером и с 1 описанием, 1 цена и так далее..

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