Просмотр полной версии : tt_news catmenu и list в одном окне
Уважаемые знатоки! Помогите пж с задачей! Допустим создано категорий n шт. В определенном стр, допустим нужно выводит n шт блоков и каждый блок должен содержать имя категорию и последные 3 новости с этой же категории. Допустим добавиш еще одну категорию, соответственно число блоков увеличится динамически. Спасибо откликнувшимся!
dmartynenko
05.12.2011, 17:50
Подойти к задаче на чистом TypoScript можно так:
1. Сделать выборку через CONTENT из tt_news_cat
2. Для вывода каждой записи в renderObj сделать COA элемент, в который вставить plugin.tt_news
3. В настройку вставленных plugin.tt_news добавить categorySelection с uid текущей категории.
Готовый код не берусь сваять, но вот примерная заготовка:
page.10 >
page.10 = CONTENT
page.10.wrap = <> | </>
page.10 {
table = tt_news_cat
select {
selectFields = uid,title
pidInList = 123
# where = ...
}
renderObj = COA
renderObj.wrap = <> |</>
renderObj.10 = TEXT
renderObj.10.field = title
renderObj.10.wrap = <> | </>
renderObj.20 < plugin.tt_news
renderObj.20 {
...
categorySelection = {field:uid}
categorySelection.insertData = 1
...
}
}
Дело в том, что нельзя допустить такой метод ввода. Добавил категорию в одном месте, с артиклами и все. Скрипт сам должен считать сколько там категорий, и выводит их в определенном месте по порядку, с 3 или 4 артиклами(новостями)
dmartynenko
06.12.2011, 12:44
Я предложил решение исходной задачи. Возможно вы ее не достаточно подробно описали?
Подобный скрипт выведет все категории и для каждой категории связанные новости (столько штук, сколько настроите). Что касается места вывода, то конечно в скрипте это не отрегулируешь - все выведется подряд одно за другим. Но с помощью CSS float/width и т.п. вещей можно сделать вывод блоков в 2, 3 колонки.
Если нужен более интелектуальный порядок вывода - например в 2 колонки и что бы блоки распределялись так, что бы колонки примерно одинаково были заполнены по высоте, то можете написать свой экст, который будет делать выборку категорий и новостей и формировать нужный контент. Это даже будет быстрей работать чем на TS, да и гибкости будет больше.
Даже в большом городе могут быт маленькие ошибки.
lib.nnn = COA_INT
lib.nnn.10 >
lib.nnn.10 = CONTENT
lib.nnn.10.wrap = <section class="accordbk"> <article class="h"> <ul> | </ul></section></article>
lib.nnn.10 {
table = tt_news_cat
select {
selectFields = uid,title
where = NOT deleted AND NOT hidden AND NOT parent_category
pidInList = 6
max = 8
}
renderObj = COA
renderObj.wrap = <li> |</li>
renderObj.10 = TEXT
renderObj.10.field = title
renderObj.10.wrap = <h3> | </h3>
renderObj.20 < plugin.tt_news
renderObj.20 {
code = LATEST
pid_list = 6
singlePid = 5
stdWrap.wrap = |
categorySelection = {field:uid}
categoryMode = 1
categorySelection.insertData = 1
stdWrap.wrap = <div> | </div>
}
}
.......
subparts.cont < lib.nnn
можете посмотреть
http://olim.hostedon.com
dmartynenko
08.12.2011, 18:09
Чудесно :) Осталось только допились HTML шаблоны и CSS.
Только в условии where писать "NOT deleted AND NOT hidden" не обязательно, такие условия ядро TYPO3 всегда добавляет само.
И не используте COA_INT, так как tt_news очень медлителен, а тут он еще и вызывается N раз. Если нужно регулярное обновление, то лучше сделать COA и поставить срок жизни кэша для этой страницы в 15 или 30 минут (задается в свойствах страницы).
dmartynenko
08.12.2011, 18:17
IMHO как то не кошерно запихивать в <li> тэги h3 + div, делайте все на div-ах.
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot