Uwaga! Od sierpnia 2017 forum jest w trybie tylko do odczytu.

Dlaczego? Dlatego, że społeczność TYPO3 przeniosła się na slack'a i stackoverflow:
  • Przeczytaj artykuł wprowadzający do slacka, w którym dowiesz gdzie i jak się zarejestrować.
  • Jeżeli masz pytania odnośnie Polskiej Społeczności TYPO3 zapraszamy na kanał slack'a #community-pl. Rozmawiamy tam w języku polskim.
  • Pytania dotyczące samego TYPO3 zadawaj po angielsku na stackoverflow oznaczając je tagiem "typo3". Następnie posługując się linkiem do tego pytania postaraj się zachęcić ludzi z kanału slack'a #typo3-cms lub bardziej pasujących kanałów tematycznych, żeby na nie odpowiedzieli.
  • Możesz też oczywiście zadawać pytania na slacku bez zakładania wątków na stackoverflow, ale wówczas wiedza ta nie jest indeksowana przez googla i część osób nie będzie chciała Ci z tego powodu pomagać.
  • Dla części osób dzielących się wiedzą ważne jest też budowanie reputacji na stackoverflow. Jest to kolejny powód dla którego powinieneś zadawać pytania na stackoverflow by zwiększyć swoje szanse na znalezienie odpowiedzi. Pamiętaj, żeby oceniać odpowiedzi!
Temat z wieloma odpowiedziami

TemplaViola - FCE (jeden DS, ale dwa TO)


Autor Wiadomość
Napisane: 20.10.2010 [12:17]
mburda
Twórca tematu
zarejestrowany: 19.10.2010
Posty: 17


Czyli chodzi o to, żeby w TO2 został dołączony link z pola field_link ?


Ok, wiec... nie icon_wink.gif

TO1 i TO2 uzywaja zupelnie innego template file.
- TO1 pokazuje duze foto, nazwisko z wrapem w innym tagu, potem stanbowisko i biografie.
- TO2 pokazuje link zawierajacy: male foto, nazwisko z innym wrapem, stanowisko z wrapem.

Tak na prawde problem ogranicza sie do tego, zeby na jednej stronie FCE po wrzuceniu do boksa z page contentem uzywaly danych ze swojego DS, ale przy uzyciu TO2 zamiast TO1.

We wzgledu na to, ze nasza firma jest czlonkiem W3C musze byc zgodny z xHTML w 100% dlatego nie jest to wcale takie proste (myslalem o tym, zeby niektore rzeczy ukryc przez CSS, ale wtedy nie bylo szans zeby strona sie nadal validowala), stad pomysl na uzycie 2 template object z nowym template file.
Napisane: 20.10.2010 [12:58]
biesior
admin
zarejestrowany: 20.03.2008
Posty: 1709
Więc tak rekordy dla tych FCE naprawdę nadają się do utworzenia dwóch osobnych instancji dla każdego człowieka.


Jeśli jednak nadal jesteś zdeterminowany zrobić to dynamicznie, powinieneś użyć.... 1 DS + 1 TO + 1 HTML file

W pliku HTML zamieść tylko wrapy niezmienne oraz wstaw divy dla wskazania lokalizacji elementów dynamicznych np:
HTML
<div class="general_wrap">
   <div id="bio_outer">[bedzie calkowicie zastapiony]</div>
</div>


Zmapuj w TV div#bio_outer jako połączenie do TypoScriptu (np. lib.bioInfo) - ustaw mapowanie jako OUTER!

potem w głównym TS strony utwórz ten lib.bioInfo jako COA i zbuduj w nim wymagany cały fragment dynamiczny (wraz z wewnętrznymi wrapami), potem użyj warunku, żeby w określonej gałęzi drzewa nadpisać deklarację lib.bioInfo

najprostsza konstrukcja:

TYPOSCRIPT
lib.bioInfo = COA
lib.bioInfo {
  wrap = <div class="bio_info"> | </div>
 
  10 = TEXT 
  // i tak dalej
}

o warunkach poczytasz tu: http://typo3.org/documentation/document-library/core-documentation/doc_core_tsref/4.3.1/view/1/4/ Ciebie interesować będzie zapewne
TYPOSCRIPT
[PIDinRootline = 123]
lib.bioInfo {
  wrap = <div class="bio_info_smaller"> | </div>
}
[end]


TYPO3 Certified Integrator | TYPO3 Społeczność Polska

prv: ['] waiting for the miracle, for the miracle to come
Napisane: 20.10.2010 [13:07]
mburda
Twórca tematu
zarejestrowany: 19.10.2010
Posty: 17


Więc tak rekordy dla tych FCE naprawdę nadają się do utworzenia dwóch osobnych instancji dla każdego człowieka.
(...)


Dzieki, na razie musze sie zajac czyms innym niestety, dam znac czy to zadziala.
Wydaje mi sie jednak, ze proponowane przez Ciebie rozwiazanie jest w pewnym sensie ominieciem templavoila i przepisania calego mappingu na typoscript?

M.
Napisane: 20.10.2010 [13:41]
biesior
admin
zarejestrowany: 20.03.2008
Posty: 1709


@mburda
Dzieki, na razie musze sie zajac czyms innym niestety, dam znac czy to zadziala.
Wydaje mi sie jednak, ze proponowane przez Ciebie rozwiazanie jest w pewnym sensie ominieciem templavoila i przepisania calego mappingu na typoscript?

M.


Działa, przerabiałem to już kiedyś

To nie jest ominięcie TV tylko spełnienie Twoich dość fikuśnych założeń icon_wink.gif
ogólnie nadal potrzebujesz FCE do utworzenia konkretnego zestawu pól, oraz zamieszczenia na jednej stronie wielu elementów wg określonego szablonu. Natomiast za pomocą typu pola TypoScript object path uzbrajasz je w możliwość dynamicznego renderowania wyglądu ostatecznego (i zmienionego zestawu danych) w zależności od lokalizacji elementu na drzewie strony.

Co do ogólnego sposobu renderowania poszczególnych pól w TV (nie tylko w FCE) zdania są podzielone, ogólnie masz dwie możliwości - w szablonie umieścić 4 kontenery i każdy zmapować osobno albo umieścić i zmapować jeden kontener, w TS utworzyć konstrukcję tych wewnętrznych 4, czyli to co Ci proponuję, żadna z tych metod nie jest lepsza lub gorsza, natomiast ta druga jest podatna na dodatkowe manipulacje z poziomu TS np. za pomocą warunków.

Odczyt wartości z pola FCE w swoim lib.* zrobisz za pomocą funkcji field

TYPOSCRIPT
lib.person = COA
lib.person {
  wrap = <div class="next_person">|</div>
 
  10 = TEXT
  10.field = field_name
  10.wrap = <h3>|</h3>
}


Swoją drogą w odniesieniu do Twoich wątpliwości, przyznam, że osobiście napisałbym mały extension do wyświetlania rekordów z tabeli tt_address zamiast wykorzystywać FCE, natomiast nie jest to niezbędne.

TYPO3 Certified Integrator | TYPO3 Społeczność Polska

prv: ['] waiting for the miracle, for the miracle to come
Napisane: 22.10.2010 [18:14]
mburda
Twórca tematu
zarejestrowany: 19.10.2010
Posty: 17


(...)


Ok, zrobilem jak mowiles i dziala...
Jedyne z czym mam problem to to, ze chce zeby ten link (w condition) byl realurlowy...
probowalem z typolink, ale zawsze zwracal mi caly link, a ja potrzebuje HREF. Jesli masz pomysl jak to zrobic, daj znaka, bo poki co dziala mi to tylko na PID.

TYPOSCRIPT
### bio
lib.personBio = COA
lib.personBio {
  wrap = <div class="peopleListBig">|</div>
  10 = TEXT
  10 {
    dataWrap = <img src="uploads/tx_templavoila/{field:field_photo_big}"
  }
  20 = TEXT
  20 {
    data = register:tx_templavoila_pi1.parentRec.header
    wrap = alt="|"/>
  }
  30 = TEXT
  30 {
    data = register:tx_templavoila_pi1.parentRec.header
    wrap = <h2>|</h2>
  }
  40 = TEXT
  40 {
    dataWrap = <h3>{field:field_name}</h3>
  }
  50 = TEXT
  50 {
    field = field_bio
    wrap = <p>|</p>
  }
}
 
 
[treeLevel = 3] && [PIDinRootline = 16]
lib.personBio >
lib.personBio = COA
lib.personBio {
  wrap = |</a>
  10 = TEXT
  10 {
    dataWrap = <a class="peopleList" href="{field:field_link}/">
  }
  20 = TEXT
  20 {
    dataWrap = <img src="uploads/tx_templavoila/{field:field_photo_small}" alt="" />
  }
  40 = TEXT
  40 {
    data = register:tx_templavoila_pi1.parentRec.header
    wrap = <h2>|</h2>
  }
  50 = TEXT
  50 {
    dataWrap = <h3>{field:field_name}</h3>
  }
}
 
[end]
Napisane: 22.10.2010 [23:52]
biesior
admin
zarejestrowany: 20.03.2008
Posty: 1709


@mburda
Jedyne z czym mam problem to to, ze chce zeby ten link (w condition) byl realurlowy...
probowalem z typolink, ale zawsze zwracal mi caly link, a ja potrzebuje HREF. Jesli masz pomysl jak to zrobic, daj znaka, bo poki co dziala mi to tylko na PID.


Hmm nie musisz wcale mapować samego URL'a za pomocą atrybutu HREF w TV - możesz przecież wygenerować cały link i zmapować go do jakiegoś elementu zastępczego (OUTER) np.

HTML
<div id="replace_this_whole_div_with_my_conditioned_link"></div>


natomiast skoro i tak już masz to zrobione użyj typolinka z parametrem returnLast = url, wymuszającym zwrócenie samego odnośnika:

TYPOSCRIPT
10 = TEXT
10.typolink.parameter = 1234
10.typolink.returnLast = url


TYPO3 Certified Integrator | TYPO3 Społeczność Polska

prv: ['] waiting for the miracle, for the miracle to come
Napisane: 25.10.2010 [10:20]
mburda
Twórca tematu
zarejestrowany: 19.10.2010
Posty: 17


TYPOSCRIPT
10 = TEXT
10.typolink.parameter = 1234
10.typolink.returnLast = url



Wielkie dzieki icon_smile.gif
Nie doczytalem dokumentacji.

M.