
| Autor | Wiadomość |
|---|---|
|
Napisane: 24.02.2009 [17:41]
|
|
|
dpacholczyk
Twórca tematu
zarejestrowany: 17.09.2008
Posty: 1073
|
Witam, chciałbym się Was spytać czy istnieje możliwość wyciągnięcia zmiennej z adresu url i wepchnięcia go do TS ? Coś jakby zmienna $_GET['nazwa'] w php. Załóżmy, że na stronie mam dwa markery ###TYTUL### ###NEWS### I teraz...do markera ###NEWS### przypisany jest tt_news. Wyświetla się tu np. single view jakiegoś artykułu. Skoro mamy signel view to mamy też w linku masę zmiennych. I teraz Chciałbym do markera przypisać tytuł tego news`a który sobie właśnie czytam...wyciągnąłbym go z bazy np. ale potrzebuje mieć uid które znajduje się w linku. Czyli...czy mogę do skryptu TS dynamicznie wstawiać zmienne...jeśli tak to jak ? p.s. Przykład ten jest tylko do zobrazowania problemu dlatego nie chodzi mi o inne rozwiązania, ale o to konkretne |
|
Napisane: 25.02.2009 [20:59]
|
|
|
kss
admin
zarejestrowany: 19.07.2007
Posty: 829
|
Wejdź na tę stronę: http://typo3.org/documentation/document-library/references/doc_core_tsref/4.1.0/view/2/2/ Zjedź do -> getText i zobacz co on potrafi. Gettext można używać w stdWrap.data, a ponieważ obiekt TEXT jest już stdWrap to przykład najprostszego wykorzystania wygląda tak: TYPOSCRIPT temp.10 = TEXT temp.10.data = GPvar:stuff GPvar można odszyfrować jako GetPostVar. Na forum było już o wyciąganiu tytułu z tt_newsa z wykorzystaniem parametru GET. |
|
Napisane: 27.02.2009 [16:42]
|
|
|
dpacholczyk
Twórca tematu
zarejestrowany: 17.09.2008
Posty: 1073
|
Hmm kss niestety nie mogę znaleźć topic`u o którym wspominasz. załóżmy, że link wygląda tak: http://xxxxxxxx/index.php?id=18&tx_ttnews[tt_news]=19&tx_ttnews[backPid]=12&cHash=a32e835d56 teraz tak...to jest strona z single view...jednak mimo tego potrzebuje zupełnie poza szablonem templatki tt_news wyświetlić drugi raz tytuł. Chciałem to zrobić w ten sposób TYPOSCRIPT lib.news_id = TEXT lib.news_id.data = GPvar:tx_ttnews|tt_news temp.marker = TEXT temp.marker.data = DB:tt_news:lib.news_id:title zrobiłem to tak jakbym programował każdą aplikację. stworzyłem zmienną trzymającą id news`a i chciałem podstawić do temp.marker...ale zonk. W jaki sposób mogę osiągnąć taki efekt ? |
|
Napisane: 28.02.2009 [14:14]
|
|
|
raczek
zarejestrowany: 04.08.2007
Posty: 32
|
Może poniższy przykład trochę Cię naprowadzi: TYPOSCRIPT lib.code = COA_INT
lib.code {
10 = CONTENT
10.table = tt_news
10.select.pidInList = #Insert Id of page where you store your records
10.select.andWhere.data = GPvar:tx_ttnews|tt_news
10.select.andWhere.wrap = uid=|
10.select.fields = title
}Więcej info o select znajdziesz tutaj: select pozdrawiam raczek Certified Level 2 TYPO3 Night Crew Member.
|
|
Napisane: 28.02.2009 [14:28]
|
|
|
dpacholczyk
Twórca tematu
zarejestrowany: 17.09.2008
Posty: 1073
|
genialne w swojej prostocie O tym nie pomyślałem, ale chyba znalazłem jeszcze prostsze rozwiązanie dam znać |
|
Napisane: 05.03.2009 [22:50]
|
|
|
kss
admin
zarejestrowany: 19.07.2007
Posty: 829
|
Oczywiście przy pobieraniu danych od użytkownika powinniśmy je, ze względów bezpieczeństwa (sql injection), przed wykorzystaniem w zapytaniu SQL sprawdzić. W ostatnim przykładzie, trzeba by było wymusić wartość integer dla GPvar:tx_ttnews|tt_news. Ponieważ andWhere jest typu stdWrap to możemy użyć wszytkich możliwych funkcji stdWrap. Jedną z nich jest intval. Otrzymujemy: TYPOSCRIPT 10.select.andWhere.intval = 1 a cały przykład: TYPOSCRIPT lib.code = COA
lib.code {
10 = CONTENT
10.table = tt_news
10.select.pidInList = #Insert Id of page where you store your records
10.select.andWhere.data = GPvar:tx_ttnews|tt_news
10.select.andWhere.intval = 1
10.select.andWhere.wrap = uid=|
10.select.fields = title
}Natomiast niedziałający przykład Dawida: TYPOSCRIPT lib.news_id = TEXT lib.news_id.data = GPvar:tx_ttnews|tt_news temp.marker = TEXT temp.marker.data = DB:tt_news:lib.news_id:title dał mi troszkę do myślenia i po chwili testów na mojej lokalnej instalacji przybrał formę: TYPOSCRIPT temp.newsTitle = TEXT
temp.newsTitle {
stdWrap.dataWrap = DB:tt_news:{GPvar:tx_ttnews|tt_news}:title
stdWrap.outerWrap = {|}
insertData = 1
}Co ciekawe jest on już "bezpieczny", ponieważ (co sprawdziłem w źródłach TYPO3) trzecia wartość w rozbiciu na dwukropki jest poddawana funkcji intval() Warto więc zapamiętać, że w elemencie treści CONTENT to co znajduje się w "where" i "andWhere" nie jest w żaden sposób sprawdzane przez TYPO3 pod względem bezpieczeństwa. Musimy o to zadbać sami. |