Wayfinder modx примеры
Урок 15 - Вспомогательное меню
В предыдущем уроке мы рассмотрели, как реализовать XML карту сайта, в этом уроке мы продолжим наращивать функциональность нашего сайта и посмотрим, как с помощью сниппета Wayfinder можно реализовать вспомогательное меню на странице нашего сайта.
Мы уже знакомились с этим сниппетом поэтому данный урок будет немного кратким. Для начала мы создадим еще один шаблон с вспомогательным меню. HTML код этого шаблона хранится в файле style-demo.html. Как его разбить на чанки вы помните из урока 4. Поэтому давайте непосредственно перейдем к реализации нашего меню.
Реализуем вспомогательное меню на MODx
Нам нужно дополнительно лишь создать еще один чанк, давайте назовем его «SUBNAV» и скопируем из нашего шаблона следующий кусок кода:
Удалите из шаблона данный кусок и вместо него вызовите наш вновь созданный чанк: { {SUBNAV}}
Теперь непосредственно перейдем к редактированию чанка, отвечающего за вывод вспомогательного меню. В первую очередь давайте изменим наш заголовок «Secondary Navigation» на «Наши услуги». Вы уже обратили внимание, что меню представляет собой обычный ненумерованный список. Это хорошо, поскольку сниппет Wayfinder генерирует точно такой же код, а значит, нам не придется делать ничего лишнего.
Для того, чтобы в этом убедиться нам необходимо назначить наш шаблон ресурсу, к примеру «Наши услуги» и создать у него дочерние ресурсы с произвольным шаблоном.
Далее открываем наш чанк «SUBNAV» и удаляем список, а вместо него вставляем вызов сниппета Wayfinder:
[ !Wayfinder? &startId=`3`]]
Где &startId=`3` - это идентификатор родительского контейнера «Наши услуги», у меня он равен 3.
Сохраняем наш чанк и обновляем страницу «Наши услуги» в результате у вас должно будет получиться вот такое вспомогательное меню:
Как видим в создании вспомогательного меню, ничего сложного нет, если вы читали предыдущие уроки. В рамках данного урока мы не правили стили, если вы захотите вы сможете сделать это самостоятельно, если вам что-то непонятно пишите в комментариях ваши вопросы, я постараюсь ответить максимально быстро.
В следующем уроке мы создадим для нашего сайта rss-ленту.
modx-evo.ru
Меню Wayfinder и активная ссылка [Решено] / Вопросы / MODX.im
Приветствую! Пытаюсь сделать меню Wayfinder, вроде все понятно, но что-то не показывается( И как сделать чтобы классу sub-menu или top-link присваивался .active? Меню такое:<div> <!-- outerTpl --> <ul> <!-- ParentRowTpl --> <li [+wf.classes+]><a href="[+wf.link+]" title="[+wf.title+]">[+wf.title+] <span>▾</span></a> <div> <!-- InnerTpl --> <ul> <!-- InnerRowTpl --> <li><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a>[+wf.wrapper+]</li> </ul> </div> </li> <!-- rowTpl --> <li><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a></li> </ul> </div>outerTpl
<ul outerTpl="menu"[[+wf.classes]]> [[+wf.wrapper]] </ul>rowTpl
<li><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a></li>parentRow
<li [+wf.classes+]><a href="[+wf.link+]" title="[+wf.title+]">[+wf.title+] <span>▾</span></a> <div> [+wf.wrapper+] </div> </li>InnerTpl
<ul> [[+wf.wrapper]] </ul>InnerRow
<li><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a>[+wf.wrapper+]</li>Firebug показывает лишь
modx.im
Hamster-fox.ru Техническая оптимизация и обновление MODX Revolution. Часть 2. Шаблоны и скрипты.
В продолжение предыдущего топика.В данном топике я просто выложу некоторые Smarty-шаблоны с сайта, а так же код процессора, который я использовал на замену Wayfinder-у.
Под катом много кода и комментов.
1. Smarty-шаблоны.
Как я и говорил не раз, phpTemplates+Smarty — это то, что нам позволяет значительно снизить нагрузку на MODX-сайт. Но помимо этого Smarty-шаблоны имеют одну офигенную штуку, которой в MODX-шаблонизации просто нет, а именно — наследование/расширение шаблонов. Давайте рассмотрим это на примере Smarty-шаблонов из Hamster-а.
Основной шаблон (используется остальными расширяющими шаблонами.)
<!DOCTYPE html> <html lang="ru"> {config name=site_name assign=site_name} {* HEAD *} <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>{field name=longtitle} | {$site_name}</title> <meta name="keywords" content="{field name=keywords}" /> <link rel="shortcut icon" href="/assets/images/favicon.ico" type="image/ico" /> <link rel="stylesheet" media="all" href="/assets/hamster/css/style.css" /> <link rel="stylesheet" media="all" href="/assets/hamster/css/prettyPhoto.css" /> <link type="text/css" rel="stylesheet" href="/assets/components/minishop/css/web/jquery.stickr.css"> <!--[if IE]> <![endif]--> <base href="{config name=site_url}" /> {* Eof HEAD *} </head> <body> <section> <section> <header> {* Header *} <a title="{$site_name}" href="/"></a> <nav> {*snippet name=Wayfinder params="startId=`0`&level=`1`"*} {assign var=params value=[ "startId" => 0 ,"level" => 1 ,"cacheable" => true ,"id" => "mainMenu" ]} {processor action="web/menu/getcatalogmenu" ns="hamster" params=$params assign=result} {assign var=items value=$result.object} {include file="inc/menu/catalog/outer.tpl"} </nav> <div> Заказ по телефону:<br />+7 (495) 221-90-21<br />+7 (495) 221-90-23<br />+7 (925) 092-28-33 </div> <div> <a href="{link id=4}" title="Корзина">Корзина</a> <span>[[!uLogin? &providers="vkontakte,facebook,odnoklassniki,twitter,mailru,google" &hidden="" &userGroups="Authorized" ]]</span> </div> {* Eof Header *} </header> <section> <aside> {* Catalog.nav *} <h4><a href="{link id=2}" title="Каталог товаров">Каталог товаров</a>:</h4> <div> {*snippet name=Wayfinder params="startId=`1` &level=`1` &rowTpl=`listRowTpl`"*} {assign var=params value=[ "startId" => 1 ,"level" => 1 ,"cacheable" => true ,"id" => "secondMenu" ]} {processor action="web/menu/getcatalogmenu" ns="hamster" params=$params assign=result} {assign var=items value=$result.object} {include file="inc/menu/catalog/outer.tpl"} </div> <div> {* Search *} <form action="{link id=6}"> <input type="text" placeholder="Поиск по артикулу или названию" name="search[text]" /> <input type="submit" value="Искать" /> </form> {* Eof Search *} </div> <div> {*snippet name="Wayfinder@MainCatalogMenu"*} {assign var=params value=[ "startId" => 2 ,"level" => 4 ,"sortBy" => "pagetitle" ,"levelClass" => "level" ,"where" => [ "template" => 2 ] ,"cacheable" =>true ,"id" => "catalog" ]} {processor action="web/menu/getcatalogmenu" ns="hamster" params=$params assign=result} {assign var=items value=$result.object} {include file="inc/menu/catalog/outer.tpl"} </div> {* Eof Catalog.nav *} </aside> <article> {block name=Breadcrumbs}<div>{snippet name=Breadcrumbs params="showHomeCrumb=`0` ¤tAsLink=`0` &showCurrentCrumb=`0`"}</div>{/block} {block name=content} {field name=content} {/block} </article> <div></div> </section> </section> </section> <footer> {* Footer *} <section> <section> <div> {* БрендыХамстерФокс *} {snippet name=brands_slider} {* Eof БрендыХамстерФокс *} </div> </section> <aside> © Хамстер-Фокс.2012<br /> Все права защищены. </aside> <aside> </aside> <div></div> </section> {literal} <!-- Yandex.Metrika counter --> <noscript><div><img src="//mc.yandex.ru/watch/19623109" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> {/literal} {* Eof Footer *} </footer> </body>
Заметка: Элементы {*… *} — это комментарии, то есть не обрабатываются и никуда не выводятся. В некоторых комментариях имеются вызовы сниппетов, на замену которым использованы процессоры или типа того.
И вот здесь мы сразу рассмотрим что же такое «наследование шаблонов» и почему у нас сразу такой большой шаблон, а не разбросанный на отдельные кусочки, чтобы эти кусочки можно было использовать в других шаблонах (как это традиционно используется в MODX-шаблонах). Для этого давайте опять посмотрим на исходный MODX-шаблон:
<!DOCTYPE html> <html lang="ru"> <head> [[$Head]] </head> <body> <section> <section> <header> [[$Header]] </header> <section> <aside> [[$Catalog.nav]] </aside> <article> [[*content]] </article> <div></div> </section> </section> </section> <footer> [[$Footer]] </footer> </body>
В данном случае MODX-шаблон конечно выглядит компактней. Но если нам нужен еще один шаблон, похожий, но с мелкими изменениями, нам придется полностью копировать этот шаблон. А дальше хорошо, если изменения где-то в общем чанке. А если нам надо внести изменения не в общий кусочек кода? И в дальнейшем получится, что если у нас накопится штук 10 шаблонов, и надо внести изменения в шаблоны, то может оказаться, что нам придется вносить изменения во все шаблоны. Плюс постоянный поиск по всем этим чанкам тоже порой отнимает не мало времени (я уже не говорю про потерю в производительности, так как сейчас речь вообще не об этом).
А что мы имеем в Smarty? Вот код еще одного шаблона, который не имеет отличий от базового шаблона:
{extends file="layout.tpl"}
Да, это все! То есть мы просто использовали другой шаблон и все. Никакого копирования никакого кода.
А как будет выглядеть еще один шаблон, который имеет отличия от базового шаблона? Вот так, к примеру, выглядит расширяющий шаблон каталога на Hamster-е:
{extends file="layout.tpl"} {block name=content} <div>[[!Catalog]]</div> {/block}
И да, это тоже все! То есть мне надо было всего лишь заменить блок вывода, чтобы не content текущей страницы выводился, а каталог, плюс он имел бы div-обрамление.
Давайте разберем как это работает.
1. Подключаем основной шаблон (обязательно в начале шаблона):
{extends file="layout.tpl"}
modxclub.ru
MODx Revolution — меню - Творческая мастерская Игоря Петунина
На предыдущий шаг...
Тестовый (учебный) сайт располжен по адресу: http://test.grandikos.com
Итак, закрепив первый успех скриншотом в предыдущей статье, наметим, теперь, шаги по дальнейшему "наращиванию мощности" нашего тестового сайта. Я хочу, к примеру, сделать своеобразную "заготовку", проще говоря шаблон под стандартный сайт, поэтому, прежде всего, позабочусь о более менее стандартных разделах сайта и меню, с помошью которого эти разделы будут показываться посетителю.
Для начала разделы будут следущие:
- Примеры страниц. Пока в этот раздел я просто вставлю пару страниц из шаблона-прототипа. В дальнейшем, этот раздел переименуется в "Проекты" и послужит демонстрационной площадкой для уже моих дизайнерских изысков.
- Блог. С этим разделом всё понятно и без разъяснений. Просто, в дальнейшем я покажу как с помощью MODx Revolution "сделать" полноценный блог.
- Статьи и публикации.
- Тестовые площадки. Со ссылками на тестовые площадки других движков. Туда я вставлю и ссылку на шаблон-прототип, чтобы иногда сравнивать или брать куски HTML кода.
В дальнейшем список разделов, конечно же, расширится, но пока, для проверки работы "многоуровневого" меню в MODx Revo, этого вполне достаточно.
Ну что, начнём разбираться с реализацией меню?
Во первых, найдём и установим дополнение MODx — Wayfinder. Как искать и устанавливать расширения я говорил в статье "MODx Revolution — настройки"
Теперь, о самом сниппете Wayfinder и о том, как "притянуть" к нему все те красивости, которые мы наблюдаем в меню шаблона-первоисточника. Это и выпадающие подменю и отъезжающие при наведении строчки.
Все эти красивости реализованы с помощью классов CSS и Ява скриптов. На данном этапе, трогать первоисточник мы не будем, а попробуем с помощью чанков MODx Rtvolution создать нужные HTML шаблоны и вставить их в виде атрибутов в сниппет Wayfinder.
Wayfinder является сниппетом, который сканирует заданную часть дерева документов MODx, находит все документы, удовлетворяющие определенным критериям (определяется параметрами), и выводит отформатированный список этих документов. Форматирование осуществляется с помощью шаблонов, и может содержать любые комбинации HTML, CSS и JavaScript, что дает огромную гибкость.
Основное назначение Wayfinder в том, чтобы генерировать навигационные меню, которые автоматически обновляются с учетом изменений, внесенных в дерево документов (раздел "Ресурсы" админки), но этот сниппет может быть использован и для других целей.
Параметры
из руководства на сайте разработчиков MODX с частичным переводом
(используются при вызове сниппета)
&startId | Отправная точка (document ID) для меню к списку документов. Укажите 0, чтобы начать с корня сайта. | current docId | |
&displayStart | Показать документ как ссылку на &startId в меню | FALSE | |
&level | Глубина (количество уровней) для построения меню. '0 ' показывает через все уровни. | 0 | |
&ignoreHidden | Не обращать внимания на "Показывать в меню" флажок для документов, и включить их в меню в любом случае. | FALSE | |
&ph | Name of a placeholder to set with the output results, instead of directly returning the output. | FALSE | |
&debug | Set to 'TRUE' to enable debug mode for extra troubleshooting. | FALSE | |
&hideSubMenus | Set to 'TRUE' to only output the active submenu. | FALSE | |
&removeNewLines | Set to 'TRUE' to remove newline characters from the output. | FALSE | |
&textOfLinks | Поле, чтобы получить сам текст ссылки. Возможные значения: menutitle, id, pagetitle, description, parent, alias, longtitle, introtext | menutitle | |
&titleOfLinks | Поле, чтобы получить название ссылки. Возможные значения: menutitle, id, pagetitle, description, parent, alias, longtitle, introtext | pagetitle | |
&rowIdPrefix | If set, this parameter creates a unique ID for each item. The value will be rowIdPrefix + docId. | FALSE | |
&useWeblinkUrl | When set to TRUE, the link specified in a weblink document will be output to the placeholder [wf.link] instead of the link to the weblink. | TRUE | |
&excludeDocs | Разделенный запятыми список идентификаторов документов, которые необходимо исключить из меню. | 0 | |
&cacheResults | caches queries for faster loading (added in 2.2.0-rc1) | ||
&contexts | Contexts to use for building the menu. Defaults to the current context. (added in 2.2.0-rc1) | ||
&startIdContext | (added in 2.2.0-rc1) | ||
&config | external php file to configure Wayfinder (see core/components/wayfinder/configs for examples) | ||
&scheme | format for how URLs are generated. Possible values are (based on makeURL API call):
|
-1 | |
&sortBy |
|
||
&sortOrder | Порядок сортировки "по возрастанию" или "по убыванию" ( 'ASC' или 'DESC') |
Короче, вызывать Wayfinder будем так (из чанка "HEADER", естественно):
А вот и чанки шаблонов для пытливых умов. Картинки увеличиваются при шелчке мышкой...
И, наконец, скриншот результата нашего плодотворного труда...
По аналогии, будем действовать и с другими встреченными в шаблоне-прототипе меню, но все остальные шаги позже, поэтому...
... продолжение следует...
GRANDIKOS
Cмотри также в разделе "MODx Revolution":
Если Вам нравится сайт, а главное, статьи и обучающие материалы, на нём представленные... Вы можете стимулировать автора, бросив на его счёт любую "символическую" сумму, что, неизбежно, подвигнет его на дальнейшее проявление здорового альтруизма...Кстати, если Вы, к тому же, вместе с "пожертвованием" оставите и комментарий, содержащий ВАШИ пожелания на будущее, то автор непременно учтёт их при планировании своей работы...
Счет на "Яндекс деньги": 41001131476679
Кошельки "WEB money":
Z148021440215 R515650544848
GRANDIKOS3dmaster.grandikos.com
Топики с тегом Wayfinder
SELECT DISTINCT `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`.`content`, `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`, ResourceGroupResources.document_group AS protected FROM `modx_site_content` AS `modResource` LEFT JOIN `modx_document_groups` `ResourceGroupResources` ON `modResource`.`id` = `ResourceGroupResources`.`document` WHERE ( `modResource`.`hidemenu` = 0 AND `modResource`.`parent` not in (1443,309) AND `modResource`.`id` IN (1,1482,1443,309,1202,23,1473,1015,2,1458,1179,259,274,266,239,626,999,1467,251,240,986,278,4,5,10,15,27,34,35,18,241,246,248,272,250,261,264,267,987,992,995,1159,1537,1844,26,1733,1504,1450,1801,1456,1501,1518,1691,1455,1447,1498,1490,1505,1457,1509,1454,1445,1503,1506,1521,1481,1494,1495,1452,1449,1448,1489,1446,1496,1451,1453,1500,1497,1507,1508,1519,1520,1522,1523,1524,1525,1540,1546,1551,1669,1552,1564,1567,1621,1140,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,994,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,1001,1002,1003,1004,1005,1006,1007,1010,1011,1014,1028,1047,1069,1087,1098,1099,1122,1134,1139,1141,1142,1143,1144,1145,1147,1148,1149,1151,1152,1155,1156,1157,1158,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1181,1185,1186,1187,1188,1189,1190,1192,1195,1196,1197,1198,1200,1201,1203,1204,1205,1206,1207,1208,1210,1211,1212,1213,1214,1215,1217,1218,1219,1220,1221,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1237,1238,1239,1240,1241,1242,1243,1244,1245,1247,1249,1250,1251,1252,1253,1254,1255,1256,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1466,1480,1483,1486,1487,1488,1491,1492,1493,1499,1502,1510,1513,1514,1515,1516,1517,1526,1527,1528,1530,1531,1532,1533,1534,1535,1539,1541,1542,1543,1544,1545,1547,1548,1549,1550,1553,1554,1555,1556,1557,1558,1560,1561,1563,1565,1566,1568,1570,1571,1572,1573,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1618,1619,1620,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1670,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1742,1743,1744,1745,1746,1749,1750,1751,1752,1753,1754,1755,1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1795,1796,1797,1798,1799,1800,1802,1831,1832,1833,1834,1835,1836,1837,1838,1840,1841,1842,1843,627,1209,1562,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,1150,1161,1194,1199,1222,1236,1326,1529,1477,1474,1475,1476,1478,1479,1016,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1088,1089,1091,1092,1093,1094,1095,1096,1097,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1135,1136,1137,1138,1146,1248,1470,7,8,991,998,1008,1009,1459,1465,1460,1461,1464,1463,1462,1180,989,1468,1469,1472,1818,1812,253,254,1569,252,263,262,256,255,258,996,1133,3,6,9,24,310,1013,1182,1216,1246,1668,1747,1813,11,1536,36,41,53,71,86,100,107,113,120,138,142,151,160,168,177,187,197,203,212,229,19,242,243,244,265,997,1193,1307,1585,1732,1734,1735,1736,1737,1738,1739,1740,1741,268,269,270,271,988,1160,1538) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) ORDER BY menuindex ASC
modxclub.ru