Вывод каждого второго (третьего) ресурса
Подскажите как грамотно вывести ресурсы по колонкам? То есть имеется ресурс-родитель, в нем допустим 6 дочерних ресурсов.
Их нужно разнести в 3 колонки и сделать возможность добавления ресурсов, так чтобы они распределялись по колонкам хоть по параметру menuindex. То есть по сути в верстке я хотел сделать 3 вызова pdoResources, чтобы в каждом была выборка по параметру menuindex:0,3,6,9 и т.д, menuindex:1,4,7,10 и т.д, menuindex:2,5,8,11 и т.д, но не могу составить условие where.
или использовать conditionalTpl, но какой при этом оператор взять?
Их нужно разнести в 3 колонки и сделать возможность добавления ресурсов, так чтобы они распределялись по колонкам хоть по параметру menuindex. То есть по сути в верстке я хотел сделать 3 вызова pdoResources, чтобы в каждом была выборка по параметру menuindex:0,3,6,9 и т.д, menuindex:1,4,7,10 и т.д, menuindex:2,5,8,11 и т.д, но не могу составить условие where.
или использовать conditionalTpl, но какой при этом оператор взять?
Комментарии: 8
Не уверен решит ли это вашу задачу, но можно попробовать церез css это реализовать.
css-tricks.com/almanac/properties/c/columns/
css-tricks.com/almanac/properties/c/columns/
div {
-webkit-column-count: 3; /* Chrome, Safari, Opera */
-moz-column-count: 3; /* Firefox */
column-count: 3;
}
Могу предложить проверять условием деления на 3 без остатка.
Для первого столбца:
Для первого столбца:
WHERE menuindex % 3 = 0
для второго столбца: WHERE (menuindex-1) % 3 = 0
для третьего столбца: WHERE (menuindex-2) % 3 = 0
п.с.: ошибся веткой)
Идея вроде хорошая. правда не пойму почему не работает:
{$_modx->runSnippet('pdoResources',[
'parents' => 9,
'tpl' => '@FILE chunks/main/AdvantagesItem.html',
'where' => '{"menuindex:%3":0}'])}
'showLog'=>1, в помощь) Смотрите какой sql выходит.
0.0001481: pdoTools loaded
0.0000310: xPDO query object created
0.0032089: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
0.0005391: Processed additional conditions
0.0008328: Added where condition: id:%3=0, modResource.parent:IN(9,10,12,13,14,15), modResource.published=1, modResource.deleted=0
0.0001030: Sorted by modResource.menuindex, ASC
0.0000050: Limited to 10, offset 0
0.0003409: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties` FROM `5ZFkOonepRdS_site_content` AS `modResource` WHERE ( `modResource`.`id` %3 0 AND `modResource`.`parent` IN (9,10,12,13,14,15) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) ORDER BY modResource.menuindex ASC LIMIT 10 "
0.0004470: Could not process query, error #1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0 AND `modResource`.`parent` IN (9,10,12,13,14,15) AND `modResource`.`published`' at line 1
0.0052440: Total time
2 097 152: Memory usage
Видимо where неправильно так в запросе. пробовал на id. Может сможете подсказать, что по логу не так?
Как минимум нет знака = между %3 и 0. Попробуйте написать в квадратных скобках чистый sql.
'where'=>'[" menuindex % 3 = 0 "]'
Спасибо, помогло)
Просто верстка уже есть. не хотелось бы переделывать.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.