|
Autor
|
Wiadomość
|
|
Piotr Vuko
Postów: 15 od 14/11/2008
|
Wtorek 18 Listopad 2008 3:54:06 pm
Fetch podobne do obecnie oglądanego
Witam,
Jak używając funkcji Fetch wypluć nody, które są podobne do obecnie oglądanego noda (artykułu)?
Czyli przeglądam artykuł z danego folderu i:
po lewej stronie strony mam jego treść a po prawej stronie linki do pozostałych artykułów z tego folderu?
Dzięki
|
|
Marcin Drozd
Postów: 378 od 04/01/2006
|
Środa 19 Listopad 2008 4:57:03 pm
Re: Fetch podobne do obecnie oglądanego
najszybciej (jesli w tym fodlerze sa tylko artykuly): $node.parent.children
lub pobrac fetchem
|
|
Piotr Vuko
Postów: 15 od 14/11/2008
|
Czwartek 20 Listopad 2008 9:00:19 am
Re: Fetch podobne do obecnie oglądanego
Dzięki za odpowiedź - już się bałem że nikt tu nie zagląda : )
Czy mógłbyś mi napisać taką komendę w całości - zaczynam się dopiero wgryzać w ez i działam trochę po omacku... w dodatku w dokumentacji i google nic nie ma na temat tej komendy.
Dzięki
pozdro
|
|
Piotr Vuko
Postów: 15 od 14/11/2008
|
Czwartek 20 Listopad 2008 11:46:35 am
Re: Fetch podobne do obecnie oglądanego
Obecnie mam coś takiego:
{* Fetch everything that is under node #296 (children, grand-children, etc.) *}
{let nodes=fetch( 'content', 'tree', hash( 'parent_node_id', 69 ) ) }
{* Loop through the nodes and display their names. *}
{section loop=$nodes}
<br /> <a href={concat("/content/view/full/",$:item.node_id)|ezurl}>{$:item.data_map.title.data_text}</a>
<br />
{$:item.data_map.intro.data_text}
<br />
{$:item.data_map.body.data_text}
<br />
{/section}
{/let}
gdzie na sztywno podaję id folderu: 'parent_node_id', 69
a chciałbym żeby to było napisane uniwesalnie: niezależnie który artykuł przeglądam widzę artykuły z tego samego folderu (np. jako lista linków)
|
|
Joanna Grzegorczyk
Postów: 3 od 22/10/2007
|
Wtorek 02 Grudzień 2008 10:59:01 am
Re: Fetch podobne do obecnie oglądanego
Tak jak napisał Marcin - używasz po prostu zmiennej $node.parent.children w pętli:
{section loop=$node.parent.children}
<br /> <a href={concat("/content/view/full/",$:item.node_id)|ezurl}>{$:item.data_map.title.data_text}</a>
<br />
{$:item.data_map.intro.data_text}
<br />
{$:item.data_map.body.data_text}
<br />
{/section}
lub możesz zbudować zapytanie fetch dodając jako parametr node_id rodzica:
{let nodes=fetch( 'content', 'tree', hash( 'parent_node_id', $node.parent ) ) }
{section loop=$nodes}
<br /> <a href={concat("/content/view/full/",$:item.node_id)|ezurl}>{$:item.data_map.title.data_text}</a>
<br />
{$:item.data_map.intro.data_text}
<br />
{$:item.data_map.body.data_text}
<br />
{/section}
{/let}
|
|
Piotr Vuko
Postów: 15 od 14/11/2008
|
Środa 03 Grudzień 2008 10:25:09 am
Re: Fetch podobne do obecnie oglądanego
Dzięki za kodzik ale coś nie działa.
Może opiszę sytuację gdzie to ma zagrać:
Korzystam z rozszerzenia ez flow.
W sytuacji kiedy przeglądam artykuł bądź listę artykułów ez flow defaultowo używa szablonu Global Layout (typu globalzone) gdzie do wyświetlania zawartości prawej belki używany jest szablon extra_info.tpl - którego działanie mi nie odpowiada bo jest ustawiane na sztywno.
W tym szablonie właśnie próbuję wklejać wasz kod i niestety żadna zawartość nie jest wyświetlana.
Z kolei jak wklejam kod (cytowany przeze mnie we wcześniejszym poście) gdzie na sztywno wpisuję node_id (np. 69), które chce wyświetlić, to wszystko gra.
Jak zrobić aby:
1. w sytuacji gdy oglądam artykuł, w prawej belce były pozostałe artykuły z folderu zawierającego oglądany artykuł
2. w sytuacji gdy oglądam folder, w prawej belce była inna zawartość (np. polecane arty z danego folderu itp).
Dzięki i pozdro
|
|
Radek K.
Postów: 180 od 12/07/2006
|
Środa 03 Grudzień 2008 1:21:18 pm
Re: Fetch podobne do obecnie oglądanego
Heh :) Czyli wszystko działa poprawnie.
Oczywiście, że w szablonie extra_info.tpl ni będzie działało, ponieważ w szablonie tym nie ma dostępu do zmiennej $node - zmienna ta dostępna jest tylko w widoku full danego węzła.
Wystarczy zatem, że podmienisz wartość z ID węzła na $module_result.content_info.parent_node_id
Składnia do sprawdzenia :)
|
|
Piotr Vuko
Postów: 15 od 14/11/2008
|
Środa 03 Grudzień 2008 3:25:57 pm
Re: Fetch podobne do obecnie oglądanego
HURA!
działa!!!
dzięki, dzięki, dzięki!!!
jesteście kochani... ile ja się nad tym nasiedziałem...
ale mam jeszcze pytanko :)
teraz mój kod wygląda tak:
{let nodes=fetch( 'content', 'tree', hash( 'parent_node_id', $module_result.content_info.parent_node_id ) ) }
{section loop=$nodes}
<br /> <a href={concat("/content/view/full/",$:item.node_id)|ezurl}>{$:item.data_map.title.data_text}</a>
<br />
{$:item.data_map.intro.data_text}
<br />
{$:item.data_map.body.data_text}
<br />
{/section}
{/let}
1. Czy jest jakiś myk żeby zbudować warunek:
kiedy oglądam artykuł to wstawiam ten kodzik z góry, a kiedy oglądam folder to inny (teraz jest tak że jak oglądam folder to wyrzuca mi z prawej strony wszystkie artykuły rodzica foldera)
2. gdzie w kodzie określa się którego szablonu użyć do wyświetlenia wyników fetcha?
Jeszcze raz wielkie dzięki i pozdro
|
|
Radek K.
Postów: 180 od 12/07/2006
|
Środa 03 Grudzień 2008 4:58:41 pm
Re: Fetch podobne do obecnie oglądanego
Oczywiście, że jest "jakiś myk" ;)
Stosuj inspekcje zmiennych:
{$module_result|attribute(show)}
Znajdziesz dużo ciekawych rzeczy i sam szybko wywnioskujesz z czego korzystać. Powodzenia :)
|
|
Piotr Vuko
Postów: 15 od 14/11/2008
|
Środa 03 Grudzień 2008 6:09:54 pm
Re: Fetch podobne do obecnie oglądanego
o matko!
a mógłbyś bardziej łopatologicznie : ) ?
byłoby idealnie jakbyś napisał mi jakiś przykład : )
dzięki
|
|
Radek K.
Postów: 180 od 12/07/2006
|
Czwartek 04 Grudzień 2008 8:57:24 am
Re: Fetch podobne do obecnie oglądanego
Proponuję abyś zapoznał się najpierw z dokumentacją eZ Publish (bez tej wiedzy każde wyjaśnienia czy przykłady mogą być dla Ciebie niezrozumiałe). W samej dokumentacji znajdziesz wiele przykładów:
http://ez.no/doc/ez_publish/technical_manual/4_0
|
|
Piotr Vuko
Postów: 15 od 14/11/2008
|
Czwartek 04 Grudzień 2008 10:47:15 am
Re: Fetch podobne do obecnie oglądanego
Czytałem, czytałem i czytałem jednak trudno to wszystko poskładać do kupy. Niestety nie ma zbyt wielu tutoriali (znalazłem dwa), które by tę wiedzę prezetnowały w konkretnych przypadkach. Co mi po 20 przykładach komendy fetch, kiedy nigdzie nie ma napisane o tym w czym mi pomogliście powyżej.
Nie jestem programistą dlatego też jest mi trudno to łyknąć czytając tylko dokumentację.
Prawdę mówiąc więcej się nauczyłem analizując kod z szablonów ez flow niż z dokumentacji.
Wracając do mojego pytania: jest to chyba ostatnia rzecz, na którą nigdzie nie mogę znaleźć odpowiedzi, więc jeżeli zdobyłbyś się na jeszcze odrobinę cierpliwości byłbym bardzo wdzięczny : )
Jeżeli jesteś z Wawy chętnie odwdzięczę się browarkiem... lub dwoma : )
pozdro
|
|
Radek K.
Postów: 180 od 12/07/2006
|
Czwartek 04 Grudzień 2008 12:08:01 pm
Re: Fetch podobne do obecnie oglądanego
Oj Piotrze więcej wiary w siebie :)
Podpowiedź była chyba wystarczająca. Robiąc inspekcję zmiennej $module_result możesz zauważyć, że jest w niej informacja na jakiej klasie zbudowany jest aktualnie przeglądany obiekt:
{$module_result.content_info.class_identifier}
Wystarczy zatem "ubrać" to w warunek IF i już masz rozwiązanie :)
|
|
Piotr Vuko
Postów: 15 od 14/11/2008
|
Czwartek 04 Grudzień 2008 6:06:36 pm
Re: Fetch podobne do obecnie oglądanego
Dzięki za pomoc. Poradziłem sobie : )
Pozdrawiam
|