Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   TypoScript практикум (http://forum.typo3.ru/forumdisplay.php?f=27)
-   -   tt_news catmenu и list в одном окне (http://forum.typo3.ru/showthread.php?t=9827)

Olim 04.12.2011 14:39

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
      ...
    }   
}


Olim 06.12.2011 12:27

Дело в том, что нельзя допустить такой метод ввода. Добавил категорию в одном месте, с артиклами и все. Скрипт сам должен считать сколько там категорий, и выводит их в определенном месте по порядку, с 3 или 4 артиклами(новостями)

dmartynenko 06.12.2011 12:44

Я предложил решение исходной задачи. Возможно вы ее не достаточно подробно описали?

Подобный скрипт выведет все категории и для каждой категории связанные новости (столько штук, сколько настроите). Что касается места вывода, то конечно в скрипте это не отрегулируешь - все выведется подряд одно за другим. Но с помощью CSS float/width и т.п. вещей можно сделать вывод блоков в 2, 3 колонки.

Если нужен более интелектуальный порядок вывода - например в 2 колонки и что бы блоки распределялись так, что бы колонки примерно одинаково были заполнены по высоте, то можете написать свой экст, который будет делать выборку категорий и новостей и формировать нужный контент. Это даже будет быстрей работать чем на TS, да и гибкости будет больше.

Olim 08.12.2011 15:45

Спасибо! Все сработало.
 
Даже в большом городе могут быт маленькие ошибки.
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-ах.


Часовой пояс GMT +4, время: 06:34.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot