Меню с количеством записей в каждой ветви

Как можно догадаться из названия блога, речь пойдет о сайте на 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. В моей базе знаний она присутствует и как отдельно стоящая. С помощью нехитрой настройки можно добиться правильного отображения окончаний слов после числительных. О ней я расскажу в другой раз.

Posted Вторник, Октябрь 6th, 2009 under General.

Tags:

Leave a Reply

Spam protection by WP Captcha-Free