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

Дмитрий
03 сентября 2022, 04:25
0
Просто через файловый менеджер загружаю)))
Даже не обязательно из документа, а например через вкладку «Файлы»
Miša Bulic
02 сентября 2022, 22:16
0
Ну дак он не видит id ресурса, значит вы его не сохранили перед добавлением файла.
Артур Шевченко
02 сентября 2022, 21:55
0
Нужно запустить парсер для одной конкретной страницы, причём если ты собираешься делать это в сниппите, запустить парсер нужно будет после того как он уже отработает, т.е. сделать двойную работу. Не кажется ли тебе, что это несколько нерационально? Если не кажется, то тебе нужно найти пример запуска парсера для отдельной страницы где-то на просторах интернета, так как таких кейсов не встречал.
Алексей Смирнов
02 сентября 2022, 20:01
+1
Артур же вам ссылку скинул. читали?
weranda
02 сентября 2022, 19:56
0
Так а как получить весь HTML?
Дмитрий
02 сентября 2022, 18:51
0
[migxResourceMediaPath]: docid could not be determined.
Явно где то тут косяк)
Дмитрий
02 сентября 2022, 18:44
0
Так вон, на скрине прописал по дефолу)
Алексей Смирнов
02 сентября 2022, 18:25
0
ну сниппет просто не сможет получить всю страницу готовую.
а если через плагин, то код сработает когда вся html страница будет готова и вы сделаете все что хотите.
Алексей Смирнов
02 сентября 2022, 18:23
0
Конечно можно.
просто берете и дописываете:
{include 'test' param1='asd' param2='cvb'}
Вячеслав Варов
02 сентября 2022, 17:28
0
А можно ли вызывать чанк с параметрами если вызов выглядит так:
{include 'test'}
weranda
02 сентября 2022, 13:47
0
Те не менее, как это сделать?
+ Какая фактически разница будет между выполнение кода сниппетом и плагином?
Артур Шевченко
02 сентября 2022, 13:15
+1
Это как минимум логически неверно. Нужен не сниппет, а плагин на cобытие OnWebPagePrerender
Артур Шевченко
02 сентября 2022, 13:12
0
<form action="[[*id]]" method="post" class="ajax_form af_example" enctype="multipart/form-data">
<div class="form-group">
<label for="chetest">Поле checkbox <span class="required">*</span>:</label>
<div class="controls">
<span class="error_chetest">[[!+fi.error.chetest]]</span>
<span><input type="checkbox" name="chetest[]" id="chetest" value="Вариант1" [[!+fi.chetest:FormItIsChecked=`Вариант1`]]>Вариант1</span>
<span><input type="checkbox" name="chetest[]" id="chetest" value="Вариант2" [[!+fi.chetest:FormItIsChecked=`Вариант2`]]>Вариант2</span>
<input type="hidden" name="chetest_control" value="">
</div>
</div>
Вешаешь на chetest обработчик события change, если хотя бы один из чекбоксов выбран в chetest_control записываешь 1, если ни один не выбран 0, после этого делаешь так
$('[name="chetest_control"]').trigger('change');
И валидируешь chetest_control. По-другому чекбоксы валидировать нельзя, т.к. если чекбокс не выбран на сервер ничего не передаётся, я попробовал обойти, но нет до AjaxForm всё равно не доходит сообщение об ошибке и вообще информация о том, что есть какой-то там чекбокс.
weranda
02 сентября 2022, 12:06
0
Не секрет.
Думал сделать подстановку ссылок по регуляркам в статье, что-то типа перелинковки: если на странице есть слово такое-то, то обрамляем его ссылкой. Помимо основного контента (статьи) на странице могут быть ссылки в сайдбаре, к примеру, или же в других местах. Хотел получать весь сгенерированный текст страницы в сниппете и делать проверку на наличие в нем искомой ссылки для подстановки. Если ссылка уже была бы в коде страницы, то ссылку не добавлял бы в текст статьи, чтобы не было дублей. Вот такая схема.
Подумав, мне кажется, что генерация всей страницы в сниппете при рендеринге страницы — слишком накладная операция. Или нет?
Артур Шевченко
02 сентября 2022, 11:48
0
А если не секрет — зачем?
Дмитрий
02 сентября 2022, 11:21
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, 11:09
0
Может и поздновато), но тут же тогда отлично подходит скрипт из документации
(так как название модели начинается на выбранную марку)
docs.modx.pro/komponentyi/msearch2/tipovyie-resheniya/zavisimyie-filtryi
Семён Кудрявцев
02 сентября 2022, 09:56
+1
Да с этой статьей уже знаком, и там в первом абзаце пишут, что EAV это про универсальность, а нам по сути это и нужно, угадать какая точно архитектура будет нужна конкретному магазину нереально, EAV как коробочное решение будет решать задачу универсально, пусть и не самым эффективным образом. А если продумать и заложить возможность полной замены реализации хранения и привязки опций — это даст ещё больше удобства, просто берешь отключаешь коробочное решение, и включаешь своё — но сомневаюсь, что многие этим будут пользоваться, моя статистика показывает, что там где уже есть EAV — мало кто пытается заменить на более производительное решение, так как хватает с головой коробочного. Но если речь про многомиллионные ассортименты и просто нереальное количество опций — то я думаю тут просто не падет выбор на MODX, как на платформу в целом.
Николай Савин
02 сентября 2022, 09:36
+1
Спасибо. Очень полезное мнение.
Насчет EAV правда не уверен.
Во первых опции и так почти по этой модели выстроены. Сущности опций привязаны к категориям, которые в свою очередь определяют какие опции будут доступны у товаров.

Во-вторых полезность EAV сильно спорна и сейчас на рынке наоборт наметилась тенденция отказа от такой модели.
Например Magento перешли к flat таблицам.

Вот хотя бы Хабр можно почитать