Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   TypoScript практикум (http://forum.typo3.ru/forumdisplay.php?f=27)
-   -   tt_news categories в <select> (http://forum.typo3.ru/showthread.php?t=1844)

Tod 26.09.2006 16:54

tt_news categories в <select>
 
В общем требуется вывести определенные категории новостей в блоки формы <select> допустим подкатегории категории1 в одном блоке, категории2 во втором и т.д.
Может кто-то сталкивался с этим и есть готовое решение? а то уже второй день копаюсь в коде((

Valery Romanchev 26.09.2006 17:21

Цитата:

Сообщение от Tod
В общем требуется вывести определенные категории новостей в блоки формы <select> допустим подкатегории категории1 в одном блоке, категории2 во втором и т.д.
Может кто-то сталкивался с этим и есть готовое решение? а то уже второй день копаюсь в коде((

речь идет о форме поиска в новостях?
тогда можно пропатчить tt_news либо написать экст, который расширяет tt_news

Если это нужно за чем-то еще, то можно просто через TS сдеать

Код:

search_more = COA
search_more{
10 = TEXT
10.value = 
50 = CONTENT
50 {
    wrap = <select name="tx_ttnews[cat]" ><option value="">Все категории</option>|</select>
    table = tt_news_cat
    select {
        # the category folder(s)
        pidInList = 104
        andWhere = parent_category =  2
    }
    renderObj = COA

    renderObj {
        10 = TEXT
        10.field = uid
        10.dataWrap = <option value="|"
        20 = TEXT
        20 {
            field = title
            wrap =  selected="selected" >|</option>
            if {
                value.field = uid
                equals.data = GPvar:tx_ttnews|cat
            }
         
        }
        21 = TEXT
        21 {
            field = title
            wrap = >|</option>
            if {
                value.field = uid
                equals.data = GPvar:tx_ttnews|cat
                negate = 1
            }
        }
    }
}

}


Tod 26.09.2006 17:38

Это не для поиска, а для такой задачи. Есть 3 типа категорий новостей. Пользователь заходит на страницу сайта и видит 3 блока select, выбирает в трех этих полях определенные категории, нажимает submit и ему выводятся все новости, которые принадлежат к трем категориям, выбранных в блоках select. Благо в последних новостях появилась возможность связывать новость с несколькими категориями.
С вашим кодом сейчас попробую поэксперементировать, а что делать с submit? в данном случае. Я так понимаю нужно будет создать подстраницу, куда поместить элемент tt_new-LIST и чтобы там были требуемые мне параметры... а именно id категорий, выбраных пользователем в select... как тут быть?

Tod 27.09.2006 15:17

Когда все начало получаться появилась такая фигня. Пишу типа для выборки категории:
Код:

categorySelection = TEXT
categorySelection.data = GPvar:menu1

Все работает. Теперь мне нужно загнать туда конструкцию типа
categorySelection = menu1, menu2, menu3.
Через COA не хочет работать... как мне объединить в одно три переменные? еще и через запятую...

void 27.09.2006 16:27

Попробуйте
Код:

categorySelection = TEXT
categorySelection.dataWrap = {GPvar:menu1},{GPvar:menu2},{GPvar:menu3}


Tod 27.09.2006 16:42

void, огромнейшее спасибо!!!
Как все доделаю опубликую код полностью для решения поставленной задачки.

Tod 27.09.2006 18:44

В общем, вот код, решающий поставленную задачу. производится выборка по трем категориям с помощью <select> на форме. Выводятся новости, принадлежащие к этим 3м категориям.
Код:

lib.cat_choose = COA
lib.cat_choose.wrap = <form action="index.php?id=16" method="post" name="Form1"><table width="630px" border="0" cellpadding="0" cellspacing="0"><tr valign="top"> | <td><input name="submit1" type="submit" value="Выбрать" class="button_style"></td></tr></table></form>
lib.cat_choose{
10 = TEXT
10.value = 
50 = CONTENT
50 {
    wrap = <td><select name="menu1" class="list_style"><option value="">Типы подарков</option>|</select></td>
    table = tt_news_cat
    select {
        # the category folder(s)
        pidInList = 2
        andWhere = parent_category =  3
    }
    renderObj = COA

    renderObj {
        10 = TEXT
        10.field = uid
        10.wrap = <option value="|"
        20 = TEXT
        20 {
          field = title
          wrap =  selected="selected" >|</option>
            if {
              value.field = uid
              equals.data = GPvar:menu1
          }
         
        }
        21 = TEXT
        21 {
            field = title
            wrap = >|</option>
            if {
              value.field = uid
              equals.data = GPvar:tx_ttnews|cat
              negate = 1
            }
        }
    }
}
52 = CONTENT
52 {
    wrap = <td><select name="menu2" class="list_style"><option value="">Категория2</option>|</select></td>
    table = tt_news_cat
    select {
        # the category folder(s)
        pidInList = 2
        andWhere = parent_category =  23
    }
    renderObj = COA

    renderObj {
        10 = TEXT
        10.field = uid
        10.wrap = <option value="|"
        20 = TEXT
        20 {
          field = title
          wrap =  selected="selected" >|</option>
            if {
              value.field = uid
              equals.data = GPvar:menu2
          }
         
        }
        21 = TEXT
        21 {
            field = title
            wrap = >|</option>
            if {
                value.field = uid
              equals.data = GPvar:tx_ttnews|cat
                negate = 1
            }
        }
    }
}
53 = CONTENT
53 {
    wrap = <td><select name="menu3" class="list_style"><option value="">Категория3</option>|</select></td>
    table = tt_news_cat
    select {
        # the category folder(s)
        pidInList = 2
        andWhere = parent_category =  24
    }
    renderObj = COA

    renderObj {
        10 = TEXT
        10.field = uid
        10.wrap = <option value="|"
        20 = TEXT
        20 {
          field = title
          wrap =  selected="selected" >|</option>
            if {
              value.field = uid
              equals.data = GPvar:menu3
          }
        }
        21 = TEXT
        21 {
            field = title
            wrap = >|</option>
            if {
              value.field = uid
              equals.data = GPvar:tx_ttnews|cat
              negate = 1
            }
        }
    }
}

}


[PIDinRootline = 9]
lib.choose_goods < plugin.tt_news
lib.choose_goods {
 code >
 code = LIST
 listOrderBy = title asc
 categoryMode = 1
 categorySelection = 27
 pid_list = 15
 templateFile = fileadmin/templates/podarki_template2.tmpl
}
[PIDinRootline = 16]
lib.choose_goods < plugin.tt_news
lib.choose_goods {
 code >
 code = LIST
 listOrderBy = title asc
 categoryMode = 2
 categorySelection = TEXT
 categorySelection.dataWrap = {GPvar:menu1},{GPvar:menu2},{GPvar:menu3}
 pid_list = 15
 templateFile = fileadmin/templates/podarki_template2.tmpl
}
[end]

Единственное, возможно последние 2 блока, где настраивается tt_news можно как-то укоротить?
!!!!А еще такая проблема. Все работает, но когда на странице, с отображаемыми результатами мы нажимае в браузере ссылку "назад", то вылазит сообщение об ошибке:
Database Error
The current username, password or host was not accepted when the connection to the database was attempted to be established!

Потом значит обновляем страницу и все работает. Почему так, кто-то может подсказать?
Может я в коде где-то ошибся...
зы. у меня там блоки новостей на 2х страницах. Изначально выводятся одни, а после выборки попадаем на другую страницу, где выводятся новости с учетом результатов этой выборки. Может Database Error можно избежать, если выводить все это на одну страницу. но как?

Tod 27.09.2006 19:18

в общем, то был какой-то непонятный глюк от типо3. создал новую страницу, с теми же самыми настройками - все работает.
спасибо всем за помощь))

margol 21.12.2009 16:48

Спасибо огромное за код! Для именно этих задач подошел.


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

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