Вопросы

Цена товара изменяемая покупателем

MODX Evolution 1.2-d8.1.5 (Oct 28, 2016) с Shopkeeper 1.3.4
Помогите, пожалуйста, решить следующую проблему. Мне нужно чтобы покупатель сам указывал цену товара и с этой ценой товар попадал в корзину и заказ. В товаре цена поле TV с названием 'price'. В шаблоне вот такая форма

<form id="add2cart_form" action="[~[*id*]~]" method="post" name="shkform" id="shkform[*id*]">
                                                         
    <input type="hidden" name="shk-id" value="[*id*]" />
    <input type="hidden" name="shk-name" value="[*pagetitle*]" />
    <input type="hidden" name="shk-rid" value="[*rid*]" />
                                 
        [[*priceTV:replace=`[[+id]]==[[*id]]`]] 
                                 
        [[+tv.price:replace=`500==5`]]
                         
    <input type="text" name="shk-price" class="shk-price" value="[[*price*]]" />
                                 
    <!-- <input type="hidden" name="shk-price" class="shk-price" value="[[*price*]]" /> -->
 
    <button style="display:none;" type="submit" class="shk-but" id="shk_but_[*id*]">В корзину</button>
                                 
<a style="cursor:pointer;" class="menu-inner_to-basket" onclick="_txq.push(['track', 'ADD_2_CART_2']);document.getElementById('shk_but_[*id*]').click();return false;">В корзину <i class="ic-basket-head"></i></a>                             
</form>

Я в шаблоне вывожу поле price не как hidden а как текст. Вот такие вариации замены цены не работают prntscr.com/ls3mpi Сниппет корзины и формы заказа такой

Денис
09 декабря 2018, 14:53
modx.pro
653
0

Получить названия производителей.

$(document).on('mse2_load', function(e, res) {
   console.log(res.data.suggestions['ms|vendor']);       
});
Результат:
{1: 6, 2: 1, 21: 1, 23: 1}
Первое значение это id производителя. После: это кол-во товаров с этого производителя.
Вопрос: как зная id производителя найти его имя?
Roman
08 декабря 2018, 23:15
modx.pro
876
0

Как вывести производителей у которых товары опубликованы?

Вывожу производителей так:
[[!pdoResources?
                &class=`msVendor`
                &tpl=`@INLINE "[[+name]]",`
                &limit=`0`
                &sortby=`name`
                &sortdir=`ASC`
            ]]
Roman
08 декабря 2018, 13:29
modx.pro
810
0

SEO Tab, массовое изменение параметров

Здравствуйте!
Использую плагин SEO Tab, чтобы можно было удобно управлять каждой страницей по отображению в сайтмапе и для поисковых роботов, удобно для СЕОшников. До определенного момента было все отлично.
Но после какого-то обновления, на одном из сайтов у всех страниц проставился запрет на индексацию и отображения в сайтмапе (магазин на более 3к+ товаров). Соответственно руками все это править очень трудозатратно.
Хотел узнать был ли у кого-то опыт такой и можно ли как-то массово поменять значения у этих параметров для всех страниц? Пробовал msimportexport, но там такие поля не импортируются.

Спасибо!
Роман
08 декабря 2018, 10:04
modx.pro
842
0

mFilter2 и virtualPage - Cannot declare class myCustomFilter, because the name is already in use

Друзья, никто не сталкивался с такой проблемой: пытаюсь вывести на сайте каталог при помощи mFilter2, создал свои фильтры — все работает, но если вывожу его при помощи virtualPage — выдает следующую ошибку:

Fatal error: Cannot declare class myCustomFilter, because the name is already in use in /core/components/msearch2/custom/filters/my.class.php on line 156

В чем может быть проблема и как ее лечить? Спасибо.
Евгений
07 декабря 2018, 18:04
modx.pro
1 404
0

Очистка кеша при отложенной публикации через TicketsForm!

Приветствую сообщество!

В общем проблема следующего характера.
Требуется отложить публикацию, т.е. после сохранения формы (через фронтэнд или бэкэнд, как оказалось проблема и там и там).

Т.е. вносим поле pub_date и по идее по наступлению этой даты, ресурс автоматически публикуется.
НО! Он не публикуется, т.к. ему нужно очистить КЕШ, т.к. новый тикет не появляется! Так вот КЕШ то не очищается и получается, что все равно надо зайти в админку и очистить его, но так по идее ведь не должно работать? Иначе зачем предусмотрена возможность отложенной публикации.

Обновился на новый MODX 2.7 может в этом косяк? (вроде на другом сайте, где еще старый стоит, я так же делаю с unpub_date и все четко работает)
Andrey
07 декабря 2018, 15:59
modx.pro
803
0

URL и Заголовок в mFilter2

Добрый день, перед покупкой mFilter2 возник вопрос:
Есть ли возможность сделать формирования url и заголовка при фильтрации элементов?
Например, у нас есть каталог бань/саун (агрегатор). Я фильтрую их по следующим критериям:
1. Бани/сауны находятся в Москве;
2. Бани/сауны стоят до 2000 в час;
3. Предоставляют кальян.

На основе фильтра у меня подгружается страница с такими параметрами:
1. URL — site.ru/search/bani-s-kolyanom-v-moskve;
2. Заголовок H1 — Сауна с кольяном от 2000 рублей в Москве;
3. Title — Сауна с кольяном от 2000 рублей в Москве;
4. Description — тоже сам задаю для этой страницы.
Никита
07 декабря 2018, 14:43
modx.pro
1 116
0

[РЕШЕНО] Как из url страниц удалить "."?

Всем привет! На сайте в url страниц в некоторых содержаться точки, как их массово удалить? На сайте около 1000 страниц и в ручную перебирать не очень то хочется.
Roman
07 декабря 2018, 12:29
modx.pro
1 145
0

Как правильно сделать окно спасибо ajaxFrom?

Здравствуйте. Подскажите пожалуйста, как правильно закрывать всплывающее окно и открывать свое окно спасибо, которое будет через несколько секунд закрываться или по кнопке?
<script>
    $(document).on('af_complete', function(event, response) {
    if (response.success) {
        $('.fancybox-container').hide();
        $('body').removeClass('fancybox-active compensate-for-scrollbar');
    }
});
</script>
Вот так я делаю. Но у меня окно «Спасибо» это костылями стилизованный jGrowl, а как вызвать после успешной отправки формы мое окно спасибо к примеру с таким id=«Thanks»?
Виталий
07 декабря 2018, 11:23
modx.pro
3
2 499
0

Как сделать изменение параметров во всех товарах через Console

Добрый день!

Через следующий плагин, меняю в товарах определенного родителя свойства:
<?php
if($scriptProperties['mode']=='upd' && $resource->get("parent") == 15){ 

  $resource->set('color_stone', array('--ФИАНИТЫ--','Бесцветные','Черные','Черно-белые','Зелено-белые','Коньячно-белье','Сиренево-белый','Зелено-белые','Цветные', '-Полудрагоценные камни-','Микс','Хризолит','Гранат','Цитрин','Топаз','Аметист','Раухтопаз','Бирюза','Оникс','Кварц зеленый','Ситал','Аквамарин','Александрит','Турмалин','Лондон топаз','Свис топаз','Родолит'));
  $resource->set('color_metal', array('белый', 'красно-белый','красно-лимонно-белый','красный','лимонно-белый', 'лимонный'));
  $resource->set('size', array('15', '15.5', '16','16.5','17','17.5','18','18.5','19','19.5','20','20.5','21','21.5','22','22.5'));
  $resource->save();
}
Плагину назначено событие: OnDocFormSave
Товаров больше сотни, как через console обработать все товары, чтоб не заходить на каждый и не пересохранять????

Нашла следующий скрипт для обработки в консоле, но он не срабатывает, а я не могу понять как исправить:

<?php
// Сколько ресурсов обрабатывать за раз
$step = 1;
// Если процесс уже остановлен, сбрасываем OFFSET
if (!isset($_SESSION['Console']['completed'])) {
    $_SESSION['console_offset'] = 0;
}
$offset = isset($_SESSION['console_offset']) && $_SESSION['console_offset'] ? $_SESSION['console_offset'] : 0;
// Формируем запрос
$q = $modx->newQuery('modResource');
$total = $modx->getCount('modResource', $q);
// Пропускаем все уже обработанные объекты
$q->limit($step, $offset);
$resources = $modx->getCollection('modResource', $q);
// Обработка
foreach ($resources as $resource) {
    print "<p>Processing resource <b>".$resource->get('pagetitle')."</b></p>";
    sleep(0.5);
}
// Меняем offset
$_SESSION['console_offset'] = $offset + $step;
if ($_SESSION['console_offset'] >= $total) {
  $sucsess = 100;
  $_SESSION['Console']['completed'] = true;
  unset($_SESSION['console_offset']);
} else {
  $sucsess = round($_SESSION['console_offset'] / $total, 2) * 100;
  $_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
    if ($i <= $sucsess) {
        print '=';
    } else {
        print '_';
    }
}
$current = isset($_SESSION['console_offset']) ?
           $_SESSION['console_offset'] :
           ($sucsess == 100 ? $total : 0);
print "\n";
print $sucsess.'% ('.$current.')'."\n\n";
Ника
07 декабря 2018, 10:49
modx.pro
1 126
0