Сергей Шлоков

Сергей Шлоков

Был в сети 06 ноября 2025, 19:54
Заказы не принимаю
В предыдущем комментарии (1 половина) я и предложил вариант с разными годами — формируй новый массив с ключами по годам и возвращай через JSON. А скриптом уже разбирай — беги циклом и добавляй в нужный блок.
Чего-то я с утра не разгонюсь пока. :) Тогда не понимаю в чем проблема. Ну и зачитывай по 5. Если нужно разбить на года, то формируй из полученных строк новый массив:
Array(
	2015=>array(id=>1,id=>2,id=>3),
	2014=>array(id=>4,id=>5)
)
Я предложил вариант с группировкой по годам. Зачитываешь год порциями. А последняя порция идет например, не 5, а оставшиеся 3 записи. Т.е. год полностью зачитан. А при следующем нажатии кнопки идет опять порция по 5 записей, но следующего года.
Если ты выводишь документы по годам, то кнопке «Загрузить еще» нужно добавить атрибут, например, data-year, в котором и указываешь год. Изначально может быть пусто (значит текущий год). Нажал — зачитались документы 2015, а кпопке присваиваешь data-year=2014. Потом 2013 и т.д. Передаешь его через ajax. А в pdpTools в where указываешь этот год
&where=`{"YEAR(createdon)": $_POST['year']}`
П.С. $_POST['year'] предварительно лучше обработать.
В репозитории версия 1.0.0-rc2.
Ситуация в следующем. Ошибка возникает из-за нового поля в таблице. Я не знаю как его добавить в таблицу в установщике. В console код
Alter table `Table`ADD field
работает, а в ресолвере resolve.table нет. А удалять таблицу и создавать новую мне кажется не правильным. А так как пакет скачали единицы, то у большинства таких проблем не будет.
Исправить ошибку можно добавлением поля в таблицу Orphoman
resource_url varchar(40) not null
или выполнить код
$modelPath = $modx->getOption('core_path') . 'components/orphoman/model/';
$modx->addPackage('orphoman', $modelPath);
$table = $modx->getTablename('OrphoMan');
$sql = "ALTER TABLE {$table} ADD `resource_url` VARCHAR(40) NOT NULL";
$stmt = $modx->prepare($sql);
$stmt->execute();
П.С. Кстати, если знаешь как работать с таблицами при установке, подскажи. Спрашивал у Василия, но он видимо очень занят.
Оно не отвечает на вопрос «Откуда здесь берется кэширование?» Это мне важно для понимания принципов ModX, а фраза «чанк в этой конструкции абсолютно лишний» не дает разъяснений. Можете пояснить, что я сделал неправильно в предыдущем решении?
Причины могут быть разные, но это не важно, так как твой код не оптимален. Ты идешь сложным путем. Я тебе предложил упростить конструкцию и не париться. Хочешь разобраться почему твоя конструкция не работает, разбирайся. Кроме тебя это никому не интересно. Честно.
Решение, которое я рекомендую
// $tpl=`Adv` можно указать или в самом сниппете или в параметрах по умолчанию сниппета (или просто вызвать $modx->getChunk('Adv', $props);) 
[[!GetRandomAdv?]] - в обычных местах проекта
// Сниппет GetRandomAdv вызывается внутри сниппета GetStudios
[[!GetStudios?]] - в выводе ресурсов с которым я работаю
Я уже вставил в сниппет uniqid() вместо рекламы — во всех рекламных местах появляется один и тот же идентификатор, значит вывод чанка кэшируется.
Не совсем понятно, что ты имел ввиду. Вставляешь в сниппет, а кешируется чанк? Это как?