Как можно догадаться из названия блога, речь пойдет о сайте на TYPO3.
Задача такая. Имеется сайт на TYPO3 с интернет-магазином. В разделе каталога товаров на каждой странице находится некоторое количество записей товаров. Требуется изобразить на сайте меню разделов с добавлением количества записей к каждому пункту. В результате должно получиться что-то вроде следующего:
- Компьютеры (12 товаров)
- Мониторы (23 товара)
В нашем случае таблица товаров носит название “tx_mgpstore_items”. Мы будем использовать postCObject для каждого элемента меню. Каждый postCObject будет использовать stdWrap.numRows для подсчета рядов, а для получения правильного списка страниц-родителей для выборки numRows мы будем использовать еще одно HMENU.
lib.topMenu = HMENU lib.topMenu { special = list special.value = 7,36,35,34,33 1 = TMENU 1 { NO = 1 NO { stdWrap.postCObject = TEXT stdWrap.postCObject { numRows.table = tx_mgpstore_items numRows.select { pidInList.cObject = HMENU pidInList.cObject { stdWrap.prepend = TEXT stdWrap.prepend.field = uid special = directory special.value.field = uid 1 = TMENU 1.expAll = 1 1.NO = 1 1.NO { doNotLinkIt = 1 stdWrap.field = uid stdWrap.wrap = ,| } 2 < .1 3 < .1 4 < .1 } } innerWrap = (|) preUserFunc = tx_drivecart_counter->itemWord preUserFunc.words.item = товар|товара|товаров } } } }
Для правильного окончания слова “товар” я использовал специальную функцию модуля Drivecart. В моей базе знаний она присутствует и как отдельно стоящая. С помощью нехитрой настройки можно добиться правильного отображения окончаний слов после числительных. О ней я расскажу в другой раз.

