CCK mezők értékének HTML list-ként történő megjelenítése

buda képe

Van egy "dolgozat" elnevezésű tartalom típusom, amelyen van 3 mező (cck):

  • Dolgozat, értekezés létrejöttének éve
  • Intézmény

Létrehoztam egy view-t, amelyben a fenti két mezőt listázom ki.

A Style-nál HTML típust választottam. Ki is listázza mindkét mezőt, de 2 list item helyett egy darabot hoz létre és abban jeleníti meg a két mező értékét.

Hogy lehet megoldani, hogy minden mező értékét külön lista elemként jelenítse meg?

Megnéztem a views erre vonatkozó tpl-jét: views-view-list.tpl.php... gondoltam, hogy majd írok egy sajátot, de sajnos nem eléggé barázdált az agyam, hogy ezt összehozzam.

Drupal verzió: 
aboros képe

van egy dolgozat tartalom típus. amikor ilyen típust tekintesz meg egy nézet segítségével akarod _egy_ listában megjeleníteni a két mező értékeit?

vagy egy lista kell az összes ilyen noderól, ahol az egyik mező szintén egy lista kell legyen, ami ennek a két mezőnek az értékeit tartalmazza?

sajna nem értem, de valszeg pofonegyszerű megoldás lesz, ha megértem, hogy mit kell pontosan megoldani. :)

0
0

-
clear: both;

buda képe

http://manager.org.hu/dolgozatok/497

A bal oldali blokkban jelenítem meg az említett 2 mező értékét. A views-ban a node ID alapján (Provide default argument/Node ID from URL) tölti be a mező értékeket a blokkba.

No itt van a problémám, ugyanis a két mező értéke egy list item-ben van.

0
0
aboros képe

nyilván egy li -ben van a két mező, mert ugyan ahhoz a nodehoz tartozik, a nézet pedig "node alapú" vagyis a "sorok" nodeonként keletkeznek.
de ez miért is baj?

szeretnéd ha úgy _nézne ki_ mint egy lista? ezt cssel könnyedén elérheted.
vagy rettenetesen fontos, hogy li elem legyen mindenképpen, mert szemantikailag az a korrekt?

több megoldást is el tudok képzelni. ha csak a kinézet miatt akarod listába, csináld meg cssel. a views tplek felépítése nem biztos, hogy engedni fogja, hogy ott elvégezd ezt a módosítást. talán azt kéne, hogy a második mezőnél bejelölöd, hogy a kimenet felülírása és gyalog te odavarrod, hogy ul li[egyik mező tokenje]/li li[másik mező tokenje]/li /ul.. esetleg nézd meg a semantic views modult, talán az is tud ilyen mezőösszevonásokat.

vagy (ezért most lehet megköveznek, de sebaj)
csinálj egy blokkot, aminek php a beviteli formája és abba tegyed ezt a kódot vagy valami ilyesmit. így kiesik a views a képből, erőforrást spórolsz.

<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
  $node = node_load(arg(1));
  if ($node->type == 'dolgozat') {
    $items[] = $node->field_thesis_author_org[0]['value'];
    $items[] = $node->field_thesis_creation_year[0]['value'];
    print theme('item_list', $items);
  }
}
?>

rakhatod ezt persze egy saját modulba is vagy olyan trükköt is csinálhatsz, hogy van egy üres blokkod és a tempalte_preprocess_block -ban id alapján ezzel a kóddal írod felül az alapból üres $block->content. ;)

0
0

-
clear: both;

szantog képe

A tpl-es megoldás is lehet, a Style-outputnál a div-en belül lehet egy ul, a Row Style outputba meg a li-k.
ezért most lehet megköveznek, de sebaj
Másodjára nekem is ez jutott eszembe, miért is bántanának miatta? :)

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

aboros képe

amatőr megoldás.
a.k.a GÁNY. :P

0
0

-
clear: both;

buda képe

Az általad ajánlott megoldást próbálom felhasználni, mert modult nem sajnos tudok írni (még).

Egyébként azért ragaszkodnék a felsoroláshoz, mert ahhoz már megírtam a CSS-t és egyébként is jobban/szebben néz ki egy felsorolás (kódszinten), mint egy DIV-rengeteg egyetlen egy lista elemen belül.

0
0
buda képe

Megcsináltam, de az általad küldött kóddal (amiért nagyon hálás vagyok) csak a timestamp íródik ki (helyesen). Próbáltam a format_date függvénnyel kiíratni csak az évet, de nem sikerült összehoznom. Folyton az 1970-es évbe botlottam valami miatt.

substr függvénnyel ki tudom szedni az első négy karaktert a timestamp-ből, de hát igen randa megoldásnak tűnik.

0
0
aboros képe

az 1970. január 1. óta eltelt időt mutatja. a format_date -nek át kell adnod az egész timestamp. azért mutat mindig 1970 -et, mert négy számjegyet kap, ami meg gyak. nulla, szóval 1970. :) remélem érthető.

szóval kb így:

<?php
$timestamp = $node->field_my_date[0]['value'];
$year = format_date($timestamp, 'custom', 'Y');
?>

ha $type -nak ugye 'custom' -ot adsz meg, akkor a $format is kötelező, ahol pedig szabályos php date mintákat adhatsz meg, amiket pedig itt találsz: http://hu2.php.net/manual/en/function.date.php

0
0

-
clear: both;