Всего 125 336 комментариев

Игорь
03 августа 2022, 19:18
0
А не подскажете еще как убрать 0 из дат, 01 июня, 02 июня, 03 июня… чтоб нуля не было в начале…
Роман
03 августа 2022, 14:54
0
Первую очередь в логи Modx, потом в логи PHP. Скорее всего не хватает памяти.
Константин Ильин
03 августа 2022, 10:01
0
Я не совсем про реализацию городов, города я делал по разному и контексты и ресурсы и migx.

Тут проблема(или мое непонимание) кеширования при вызове pdoSitemap.
даже если в шаблоне для теста указать напрямую {$.server.HTTP_HOST}, результат будет такой же
{'!pdoSitemap' | snippet : [
    'parents' => '0'
    'tpl' => '@INLINE <url>
    <loc>{$.server.HTTP_HOST}[[+url]]</loc>
    <lastmod>[[+date]]</lastmod>
    <changefreq>[[+update]]</changefreq>
    <priority>[[+priority]]</priority>
    </url>'
]}
Роман
03 августа 2022, 08:51
+1
{$total.cost | replace: " " : ""}
{$product.price | replace: " " : ""}
Евгений Дубровин
03 августа 2022, 06:44
0
оно там есть, говорю же, это корзина, в алерт эти переменные выводятся без проблем например.
а вот в запросе этом выдают ошибку или уведомление от АПИ банка,
что sum и price должны быть числами.
при этом в карточке товара пот такой код
tinkoff.create(
    {
      items: [{name: '[[*pagetitle]]', price: [[+price:stripString=` `:mpy=`1.07`]], quantity: 1}],
      promoCode: 'default',
      sum: [[+price:stripString=` `:mpy=`1.07`]],
      shopId: 'cornu',
      showcaseId: 'cornu',
    },
    {view: 'modal'}
  )
отрабатывает штатно.
вот здесь например (кнопка «в кредит» справа)
cornu.ru/kvadrokopter-hubsan-h117s-zino-combo/
Александр
02 августа 2022, 23:38
0
у меня несколько вложенных и вложенных в них каталогов.
настраивать перетаскиванием в каждом из них — не реально.
руки говорят — «А ты переделай все опции, переназови их, да так, чтобы они шли как надо»
голова говорит — это не варик
делать-то что?
Максим
02 августа 2022, 23:36
0
Ну 10 лет сразу видно… То обращаетесь к переменным, которых еще не существует, то утверждаете, что феном не отрабатывает и в виде аргумента указываете ошибку JS в которой сказано, что функция credit не определена… И про логи молчите…
Покажите результат (сгенерированный код) последнего последнего варианта и лог ошибок после генерации кода. Предварительно очистив лог ошибок.
А лучше так:
1) Код
2) Результат
3) Лог
Роман
02 августа 2022, 22:18
0
Выведите, все что есть в products и будет понятно.
{$products | print_r}
Роман
02 августа 2022, 22:10
0
В примере мне кажется все на TV сделано, просто подтягивает все свойства из родительской категории.
Евгений Дубровин
02 августа 2022, 21:58
0
блин, ребят, вы чего, что с вами?)
какие тыки? у меня больше десяти лет опыта, честно.
какой бэкенд, какие методы ит.п.?!

всё реализовано банком, вот здесь описано с примерами loans.tinkoff.ru/applications/online/08be1ce1-c6d8-4d8e-b482-83947f7b1078

если в мой вышепоказанный код вставить вместо переменных числа (и произведение price и quantity будет равняться sum), то всё отрабатывает штатно.
а вот переменные там (в том json запросе) не отрабатывают (ни jjavascript ни fenom).
вот только в этом загвоздка и этот вопрос только и пытаюсь решить.
Максим
02 августа 2022, 21:57
0
Вообще у поисковых систем есть понятие «Основное зеркало». Я бы отталкивался от него. Соответственно, если поддомен — дубль сайта, то я бы сделал 302 редирект на основной домен. Если поддомен содержит уникальную информацию, то я бы реализовывал либо контекстами, либо самописным функционалом…
А вообще, когда-то давно реализовывал самописным функционалом города. Вот код его плагина:
<?php
/** @var modX $modx */
switch ($modx->event->name) {
    case 'OnHandleRequest':
        $host = $_SERVER['HTTP_HOST'];

        /** @var city $cityService */
        $cityService = $modx->getService('city', 'city', MODX_CORE_PATH . 'components/city/model/', array());
        if (!$cityService) {$modx->log(xPDO::LOG_LEVEL_ERROR, 'Could not load city class!');return;}

        $city = $cityService->getCity($host);
        if (empty($city)) {return;}

        $server_protocol = $modx->getOption('server_protocol', array(), 'http');

        if (!$city['active']) {$modx->sendErrorPage();return;}

        foreach ($city as $key => $value) {
            if (in_array($key, $cityService::EXCLUDE_FIELDS) || empty($value)) {continue;}
            else if ($key == 'key') {
                $cityService->setSettings('http_host', $value);
                $cityService->setSettings('site_url', $server_protocol . '://' . $value . '/');
            }
            else if ($key == 'name_site') {
                $cityService->setSettings('site_name', $value);
            }
            else if ($key == 'name') {
                $cityService->setSettings('city', $value);
            }
            else {
                $cityService->setSettings($key, $value);
            }
        }
        break;
}
Отсюда вас могут интересовать строки:
$cityService->setSettings('http_host', $value);
$cityService->setSettings('site_url', $server_protocol . '://' . $value . '/');
Попробуйте на этом же событии установить эти системные настройки в соответствии с доменами в запросе… У меня тогда такое сработало и работает до сих пор!
Максим
02 августа 2022, 21:35
0
В примере, указанном вами, цены отличаются…
Но если уж так хочется без дополнения, то я бы написал сниппет получения уникальных опций из категории товаров (GROUP BY или DISTINCT) и вызывал бы его указывая интересующие опции… При этом я бы делал так, что бы сниппет принимал список опций и на основании списка строил корректный запрос в базу, оборачивал результат в чанк и выводил…
Максим
02 августа 2022, 21:28
0
Я иногда удивляюсь тому, как люди методом тыка пытаются решать проблемы… Есть Документация Тинкофф
Ознакомившись (даже бегло) становится понятным, что любая оплата будет происходить в 2 запроса… Первый — инициализация платежа в банке, которая возвращает ссылку на форму банка. По опыту взаимодействия могу сказать, что время жизни ссылки регулируется как раз в этом методе. Так же для инициализации платежа нужна уникальная строка для обозначения заказа в вашей базе… Тут уже ясно, что заказ на вашем сайте должен быть уже сформирован и вы должны знать его идентификатор (ID).
Как бы там не было, но стоит так же получать ответ от Банка… Успех или нет… Для этого в лк банка указывается ссылка для нотификаций. По опыту — эту ссылку тоже можно перепределять в методе init (инициализация платежа).
И теперь уже совсем очевидно, что общение с банком в ModX корректнее всего реализовывать на бекенде… Соответственно придерживаясь логики miniShop2…
Так что создавайте класс платежа и не нужно будет костылить на фронтенде. Сложного там нет ничего, если немного почитать документацию и вникнуть…
Вячеслав Варов
02 августа 2022, 21:20
0
цена за тонну внутри категории одна, думаю что это дополнение не совсем подходит
Максим
02 августа 2022, 21:03
0
Кажется корректней было бы использовать msOptionsPrice2
Константин Ильин
02 августа 2022, 18:47
0
disk.yandex.ru/i/wIiFfWqjK78AxA

Есть кешовый файл
disk.yandex.ru/i/cFgFjjmhf3BYFQ
Он должен быть если я вызываю некешированным?

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

Такая ситуация и на других сайтах.
Так же пробовал в контенте Некешируемого Ресурса вызывать с Пустым шаблоном, все равно тянет из кеша
Дмитрий
02 августа 2022, 17:27
0
В итоге я решил вопрос так.
1) Создал объект с марками и моделями (по наводке Романа, еще раз спасибо!)
Что-то такое:
var carsModelsObject = {
    "Alfa Romeo": {
        "146": [],
        "147": [],
        "156": []    
    },

    "Audi": {
        "80": [],
        "90": [],
        "100": [],
        "A2": [],
        "A3": [],
        "A4": [],
        "A5": [],
        "A6": [],
        "A6 Allroad": [],
        "A8": [],
        "Q2": [],
        "Q3": [],
        "Q5": [],
        "Q7": [],
        "TT": [],
        "V8": [],

    },
// и так далее по всем маркам...
}
2) Далее сам скрипт
<script>
      window.onload = function() {
        var carSel = document.getElementById("msoption|marka_0"); // мои названия опций
        var modelSel = document.getElementById("msoption|model_0"); // мои названия опций
    
        for (var x in carsModelsObject) {
            carSel.options[carSel.options.length] = new Option(x, x);
        }
        carSel.onchange = function() {
    
            modelSel.length = 1;
          //display correct values
          for (var y in carsModelsObject[this.value]) {
            modelSel.options[modelSel.options.length] = new Option(y, y);
          }
        }
      }
    </script>
Может не самое элегантное решение, но решение)
Если кто-то может поделиться своим вариантом, возможно более удачным, буду признателен. Спасибо!
Дмитрий
02 августа 2022, 17:18
0
Спасибо за подсказку.
Евгений Дубровин
02 августа 2022, 15:15
0
это выполняется в корзине. (чанк cartOuter)
вот не отрабатывает просто феном, поэтому и не могу понять)
т.е. имя товара — без проблем.
а числа — никак почему-то(

т.е.

function credit() {
	tinkoff.create(
    {
      sum:  {$total.cost},
      items: [

    		{foreach $products as $product}	{ name: '{$product.pagetitle}', price: {$product.price}, quantity: {$product.count} }, {/foreach}
    		]
    ,
      promoCode: 'default',
      shopId: 'cornu',
      showcaseId: 'cornu',
    },
 {ignore} {view: 'newTab'} {/ignore}
  )
	}
вот этот код выдает ошибку credit is not defined