АндрейЧ

АндрейЧ

Был в сети 07 сентября 2020, 12:19
Заказы не принимаю
Посмотри в базе таблицу заказов и другие связанные с ней.
ты очистил ее или другую таблицу, и забыл очистить связанные с ней таблицы — ордерс адресс и др
+ при чистке ордерс надо очистить и таблицу сбера.
Смех т.к. я долго пробывал сам придумать решение, думал все просто ))
Да верстка была именно такая, чтобы все работало если решу проблемы с миникорзиной.
Пока пришлось сломать верстку, чтобы за счет css решить этот вопрос.

Спасибо большое, мне бы научиться, немного подумать, поэтому подсказки помогают.

Вопрос. Не получится же вашим скриптом решить проблему или пробывать?
У меня в скрипте многое не стандартно assets/components/minishop2/js/web/default.js

Ошибся я в формулировке, 2 миникорзины работают, но в одной из них ломается динамическое добавление-удаление товаров без перезагрузки страницы, и синхронизация миникорзины с основной корзиной на странице cart.html/
Это наверное связано с msMiniCartDynamic


miniShop2.Cart = {
        callbacks: {
            add: miniShop2Config.callbacksObjectTemplate(),
            remove: miniShop2Config.callbacksObjectTemplate(),
            change: miniShop2Config.callbacksObjectTemplate(),
            clean: miniShop2Config.callbacksObjectTemplate()
        },
        setup: function () {
            miniShop2.Cart.cart = '#msCart';
            miniShop2.Cart.miniCart = '#msMiniCart';
            miniShop2.Cart.miniCartNotEmptyClass = 'full';
            miniShop2.Cart.countInput = 'input[name=count]';
            miniShop2.Cart.totalWeight = '.ms2_total_weight';
            miniShop2.Cart.totalCount = '.ms2_total_count';
            miniShop2.Cart.totalCost = '.ms2_total_cost';
        },
        initialize: function () {
            miniShop2.Cart.setup();
            if (!$(miniShop2.Cart.cart).length) {
                return;
            }
            miniShop2.$doc.on('change', miniShop2.Cart.cart + ' ' + miniShop2.Cart.countInput, function () {
                $(this).closest(miniShop2.form).submit();
            });
        },
        add: function () {
            var callbacks = miniShop2.Cart.callbacks;
            callbacks.add.response.success = function (response) {
                this.Cart.status(response.data);
            };
            miniShop2.send(miniShop2.sendData.formData, miniShop2.Cart.callbacks.add, miniShop2.Callbacks.Cart.add);
        },
        remove: function () {
            var callbacks = miniShop2.Cart.callbacks;
            callbacks.remove.response.success = function (response) {
                this.Cart.remove_position(miniShop2.Utils.getValueFromSerializedArray('key'));
                this.Cart.status(response.data);
            };
            miniShop2.send(miniShop2.sendData.formData, miniShop2.Cart.callbacks.remove, miniShop2.Callbacks.Cart.remove);
        },
        change: function () {
            var callbacks = miniShop2.Cart.callbacks;
            callbacks.change.response.success = function (response) {
                if (typeof(response.data.key) == 'undefined') {
                    this.Cart.remove_position(miniShop2.Utils.getValueFromSerializedArray('key'));
                }
                else {
                    $('#' + miniShop2.Utils.getValueFromSerializedArray('key')).find('');
                }
                this.Cart.status(response.data);
            };
            miniShop2.send(miniShop2.sendData.formData, miniShop2.Cart.callbacks.change, miniShop2.Callbacks.Cart.change);
        },
        status: function (status) {
            if (status['total_count'] < 1) {
                location.reload();
            }
            else {
                //var $cart = $(miniShop2.Cart.cart);
                var $miniCart = $(miniShop2.Cart.miniCart);
                if (status['total_count'] > 0 && !$miniCart.hasClass(miniShop2.Cart.miniCartNotEmptyClass)) {
                    $miniCart.addClass(miniShop2.Cart.miniCartNotEmptyClass);
                }
                $(miniShop2.Cart.totalWeight).text(miniShop2.Utils.formatWeight(status['total_weight']));
                $(miniShop2.Cart.totalCount).text(status['total_count']);
                $(miniShop2.Cart.totalCost).text(miniShop2.Utils.formatPrice(status['total_cost']));
                if ($(miniShop2.Order.orderCost, miniShop2.Order.order).length) {
                    miniShop2.Order.getcost();
                }
            }
        },
        clean: function () {
            var callbacks = miniShop2.Cart.callbacks;
            callbacks.clean.response.success = function (response) {
                this.Cart.status(response.data);
            };

            miniShop2.send(miniShop2.sendData.formData, miniShop2.Cart.callbacks.clean, miniShop2.Callbacks.Cart.clean);
        },
        remove_position: function (key) {
            $('#' + key).remove();
        }
    };
Вернее вопрос такой, использую этот скрипт — он нормально читает screen_width
<script>

    var h_hght = 370; // высота шапки
    var h_mrg = 0;     // отступ когда шапка уже не видна
    var screen_width;     // ширина экрана эзера
    
    screen_width = screen.width;
    alert(screen_width);
    
    if (screen_width < 768) var h_hght = 370;
    if (screen_width < 768)   
    
   $(function(){
    $(window).scroll(function(){
       var top = $(this).scrollTop();
       var elem = $('#top-megamenu-nav');
       if (top+h_mrg < h_hght) {
        elem.css('top', (h_hght-top));
       } else {
        elem.css('top', h_mrg);
       }
     });
   });
</script>
… А из чанка никак не могу использовать ширину… не работает конструкция:
[[*screen_width:gt=`768`:then=`меньше 768`:else=`больше 768`]]
И другие глобальные переменные из файла скрипта также не могу в чанке вывести
Помогите плз. Использую ширину экрана, не получается вывести ее в чанке.

Так видит значение ширины экрана…


… а в TV заюзать значение никак не получается и

[[*screen_width:gt=`768`:then=`меньше 768`:else=`больше 768`]]

И другие глобальные переменные из файла скрипта также не могу в чанке вывести…
Проблема почти решена, снипет создает все таки файл, на хостинге он нормально открывается как текстовый файл — идеальный фид  гугла, но по его адресу он не скачивается — почему то сайт его в виде страницы открывает, с красной ошибкой как на скрине выше.
Спасибо. Если в вызове msProducts? &parents=`[[*id]]` тогда товары в фид не выводятся, а шапка фида повляется. Если `[[+id]] тогда ошибка и фида нет вообще.

При этом 2 ошибки в журнале:
Обнаружено пустое состояние IN с идентификатором ключа

[2019-10-29 16:28:06] (ERROR @ /core/xpdo/om/xpdoquery.class.php: 764) Encountered empty IN condition with key id
[2019-10-29 16:25:50] (ERROR in modProcessor::run @ ..../core/model/modx/modprocessor.class.php: 177) Flat file processor support, used for action mgr/resources/getlist with path

PS Оба варианта создания фида, сниппетом или просто XML файлом — работают отлично на тестовом сайте фид создается.
На рабочем сайте — нет. так работает =`[[*id]]`, а так нет: &parents=`[[+id]]` Проблема в этом кусочке кода:
[[!msProducts?
      &depth=`10`
      &limit=`9999`
      &parents=`[[*id]]`
      &tpl=`GoogleMerchantItem`
      &includeTVs=`brand,availability`
    ]]
именно из-за него на XML странице с ошибка:


А вот такой код протестил для интереса — он нормально создает XML страницу с RSS.
:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>[[*pagetitle]] / [[++site_name]]</title>
		<link>[[~[[*id]]?scheme=`full`]]</link>
		<description>[[*description:cdata]]</description>
		<language>en</language>
		<copyright></copyright>
		<ttl>120</ttl>
		<atom:link href="[[~[[*id]]?scheme=`full`]]" rel="self" type="application/rss+xml" />
		[[!pdoResources?
			&tpl=`tpl.Tickets.rss.row`
			&parents=`15`
			&depth=`1`
			&limit=`10`
			&showHidden=`1`
			&sortby=`createdon`
			&where=`{"class_key":"Ticket"}`
			&useWeblinkUrl=`1`
			&scheme=`full`
		]]
	</channel>
</rss>
Спасибо за помощь. С твоим кодом такая же ошибка.
This page contains the following errors:
error on line 1 at column 2: StartTag: invalid element name
Below is a rendering of the page up to the first error.
<?php
$filename = MODX_BASE_PATH . 'gmerch.xml';
$limit='1000';
$offset='0';
$tpl = '@INLINE <item>
  <title>{$pagetitle}</title>
  <link>'.MODX_BASE_PATH.'/{$uri}</link>
  <description>{$introtext | striptags}</description>
  <g:image_link>'.MODX_BASE_PATH.'/{$image}</g:image_link>
  <g:price>{$price}</g:price>
  <g:id>{$article}</g:id>
  <g:brand>{$_pls["vendor.name"]}</g:brand>
  <g:condition>new</g:condition>
</item>';

$data = '<?xml version="1.0"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
<title>Название</title>
<link>'.MODX_BASE_PATH.'</link>
<description>Описание</description>'; 
$data .= $modx->runSnippet('msProducts', array(
       'parents' => 0, 'where' => '{"Data.favorite":1, "alias:!=":""}', 'limit' => $limit, 'offset' => $offset, 'tpl' => $tpl, 'includeThumbs'=> '600x600', 'includeContent' => 1, 'includeTVs' => 'img,image'
    ));

$data = '</channel></rss>';

$filename = MODX_BASE_PATH . 'gmerch.xml';
$fp = fopen($filename, 'a');
fwrite($fp, $data);
fclose($fp);
Павел доброго дня.
Скажите плз, за сколько денег настроите импорт в соц. сети — ВК ОК и FB?
Я не видел RSS ленту, опыта нет настройки… «запрограммируете» ее на 2 задачи?

1. чтобы старые опубликованные ресурсы с сами сайта постились в соц. сети, по очереди как-нибудь.

2. чтобы новые ресурсы при публикации на сайте автоматом постились в соц. сети
Я хочу 1000 ресурсов импортнуть с датами публикации в течении года… получится все что публикуется — автоматом в соц. сети постилось?
Все работает чинно! стабильно. Несколько сайтов, WP и Modx одного Юрлица, печатают бумажные и шлют электронные чеки.
В админке опций не вижу как у Алексея.
prnt.sc/obb9yw
Не проблема, т.к. не знаю — зачем они там нужны. Но впринципе нужны, чтобы где попало данные не искать.
Если руки дойдут то подскажите когда нить как настроить. компонент версии dreamkas 1.0.2-beta