Наумов Алексей

Наумов Алексей

С нами с 31 марта 2013; Место в рейтинге пользователей: #18
Наумов Алексей
14 января 2021, 14:27
+1
Прям в точку…

Ну правда кроме первой фразы про 99% вопросов. В целом могу отметить, что вопросы ко мне приходят, как правило, дельные и выходящие за рамки описанного в документации и статьях.
Наумов Алексей
14 января 2021, 14:23
+1
Я так бегло почитал про ошибку, и вижу среди причин ее появления:

Картинки, что представлены на сайте, не имеют прописанных параметров ширины и высоты.
Дизайн сайта имеет интерактивные элементы, которые подгружаются и показываются при определённых событиях, к примеру полной загрузке страницы, наведении курсора мышки и т.д.
Вставки блоков со сторонних ресурсов. Среди таких блоков могут быть iframe, рекламные и т.д.
И некоторые другие специфические причины.
отсюда вывод — нужно сайт смотреть, а не то, на чем он сделан.
Наумов Алексей
13 января 2021, 14:02
0
По идее да, все верно поняли.
Наумов Алексей
13 января 2021, 11:21
+2
Я написал некий компонент, в нем табличка с данными, назовем его Books.
pdoResources умеет строить запрос к любой таблице, но по-умолчанию делает это к modResource.

Как теперь заставить pdoResources выбрать данные с книгами? Правильно, указать параметр class = Books.
Но! MODX не знает о том, что у нас есть такой объект Books, вот параметр loadModels здесь нам и поможет, он заставит загрузить схему с объектом в память.
Наумов Алексей
11 января 2021, 16:51
+3
Да были где-то здесь эксперименты…
суть сводилась:
— если просто подключение простых чанков и кешируемых сниппетов — то парсер MODX чуть быстрее
— если есть всякие if, модификаторы (is и т.п.), то феном начинает выигрывать.

Для меня в любом случае важнее удобство Fenom, чем миллисекунды скорости.
Наумов Алексей
30 декабря 2020, 09:35
0
Я так понимаю, что речь идет о том, чтобы показать комплекты, в которые входит товар?
Здесь история в том, что по идее нужно вызывать msProducts, который отобразит товары так, как нужно (с подключением изображений, параметров и т.д.).
Я для этих случаев просто получал ids товаров, а после передавал их в msProducts:
{set $ids = $_modx->runSnippet('!msProductKits', ['mode' => 'product','ids' => 1])}
{if $ids}
{'!msProducts' | snippet : [
    'parents' => 0,
    'resources' => $ids,
    'limit' => 0,
]}
{/if}
Наумов Алексей
29 декабря 2020, 10:30
0
Совсем недавно сталкивался, тоже самое хотел сделать, на событии msOnBeforeAddToCart задать товару в корзине name.

Не получилось, сразу в нескольких местах выскочили проблемы, ни сниппет msCart, ни чанки не готовы к такому повороту событий) все равно во многих местах тащится родной pagetitle от товара… я в итоге забил, и вместо вывода pagetitle в заказе вызываю каждый раз свой сниппет, который динамически формирует название товара.

А вообще идея здравая: сделать возможность подменить name у товара в корзине.
Наумов Алексей
29 декабря 2020, 10:15
0
Это кешированый вызов:
[[+modx.user.id]]
Это некешированный вызов:
[[!+modx.user.id]]
Различие в том, что первая запись после первого своего вызова кешируется и данные сохраняются. Поэтому для 2го пользователя все равно будете видеть id первого.
Наумов Алексей
29 декабря 2020, 09:59
0
Я вот даже при хоть каком-то желании помочь, вот прочитав эту всю кашу, ничего не понял, сниппет какой-то вызывается, чето-то передается в него, юзер, логин, селект и запрос… ААААААА!!!
Наумов Алексей
25 декабря 2020, 17:15
+1
да, но не задавался исследованием скорости.

Как правило, если не делать сложных и странных запросов, преобразований и грамотно кешировать, то страницы любого сайта работают быстро и это мало зависит от статических или не статических чанков.
Наумов Алексей
25 декабря 2020, 15:35
+3
1000 человек, это совсем не много.
Мой выбор Fenom, даже если он будет в чем-то медленнее.

Тут были эксперименты, что при сравнении простых вызовов сниппетов/чанков Fenom даже проигрывал…
Но! Чего только стоят if и foreach в феном… я уже не представляю как без них жить.
Наумов Алексей
25 декабря 2020, 13:31
0
Как минимум вот это '$_modx->resource.id' должно быть без кавычек.
Наумов Алексей
25 декабря 2020, 13:06
0
Скорее всего это 20 заказ 12 месяца, не?)
Или 12 заказ 20 года
Наумов Алексей
25 декабря 2020, 11:19
+1
weight: {width: 50, renderer: function (value, metadata, row) {
    var w = parseFloat(row.data.weight.replace(/\s/g, ''));
    var c = parseFloat(row.data.cost.replace(/\s/g, ''));
    if (w > c) {
        metadata.style = 'color: green;'; return value;
    }
}},
parseFloat и replace чтобы пробелы убрать и преобразовать в число, т.к. данные приходят строками, а не числами
Наумов Алексей
24 декабря 2020, 15:25
0
weight: {width: 50, renderer: function (value, metadata, row) {
    debugger;
    metadata.style = 'color: green;'; return value;
}},
и да, f12, обновляем страницу и смотрим, что у нас в row, есть ли нужные данные
Наумов Алексей
24 декабря 2020, 14:42
0
В моих компонентах я вижу что renderer это функция с такими параметрами:
function(val, cell, row)
попробуйте добавить 3й параметр и посмотреть в отладчике, в row должна быть строка с данными со всеми полями объекта.
Наумов Алексей
23 декабря 2020, 17:08
+1
Если вы вызывали сниппет через стандартный парсер modx (квадратные скобки), то этот код всегда обрабатывается. Раз уж у вас Fenom, так и сниппет вызывайте через синтаксис Fenom, будет все ок.
Наумов Алексей
21 декабря 2020, 16:41
0
Посредством SQL запроса нет.
Да и проверять посредством php скрипта наличие файла на диске так себе идея.

Лучше битые ссылки исправьте.