Egy saját készítésű modulommal egy bizonyos nodetípus megjelenítéséhez a hook_menu hurokkal MENU_LOCAL_TASK típusú menüpontot adok hozzá, ahol a nodeban cckval tárolt filefield mezőket (csv fileok) jelenítem meg a page_callback -ben, theme('table'.. módon. (ezért is érdemes dugra járni ugye;)
Az ilyen típusú nodeokban van egy field_fokep nevű mező, ezt szeretném megjeleníteni.
'Viszonylag' sikerült is, így:
menüpontom page_callback függvényében ez:
.. $output .= theme('imagefield_item', $node->field_fokep[0]); ..
Igenám, de ez úgy rakja ki a képet, hogy nem veszi figyelembe, hogy mit állítottam be a tartalomtípusom mezőinek megjelenítési beállításainál.
Azt olvastam, hogy:
The 'view' operation (handled by the Content module) constructs the $node in a way that you can use drupal_render() to display the formatted output for an individual field.
i.e. print drupal_render($node->field_foo);
de ha ezt csinálom:
$output .= drupal_render($node->field_fokep);
akkor eltörik az oldal, a következő hibával:
Fatal error: Unsupported operand types in /home/aboros/public_html/renault/includes/common.inc on line 2827
Kérdésem az lenne, hogyan tudnám elérni, hogy a képem úgy jelenjen meg, ahogy a cckban beállítottam, tehát pl ilyen-olyan imagecache sablon + lightbox mondjuk? Hogyan tudom "lerenderelni" ezt a mezőt? Vagy bármelyiket?
szerver log?
A szerver logban mi van? Vagy: a "Fatal error: Unsupported operand types" után lekért oldalra mit ír ki? Elvileg ott ki kell tennie a figyelmeztetéseket, hogy pontosan miért nem eszi meg a drupal_render() az átadott tömböt.
sajnos még nem találtam meg a szerver logot
site5 pilótafülke adminfelületén még nem sikerült olyan logra lelnem, amiben szerepelne ez a hiba.. :)
viszont ha a node.tpl.php -ban hívom így, hogy
akkor is ugyan azt a hibát kapom. :(
nyomozok vadul tovább, találtam már a lightboxban olyan sminkfüggvényt, ami visszaadná szépen a képemet, de annak meg kéne mondanom, hogy melyik imagecache presetet használja és az pedig nincsen benne a mező tömbjében sajnos.
valami majd lesz, olyan még nem volt, hogy nem lett valami, csak úgy megörültem, hogy ez ilyen egyszerű, hogy drupal_render, aztán hoppá, mégse. :(
-
clear: both;
képernyőn?
Ha beállítod, hogy a képernyőre is írja a hibákat, akkor a törött oldal után elsőként lekért oldalra mit ír ki? (Szép hosszú rózsaszín warningnak kellene megjelennie.) Egyébként mi van a tömbben? print_r($node->field_fokep)?
a tömb tök szabályosnak tűnik
ez van benne:
a képernyőre írt hibajelentés szerint rossz argumentumot kap egy foreach:
az a bajom, hogy a modulom szintjén a mező tömbjében nincs meg a 'view' érték, ahogy mondjuk node.tpl.php szintjén már megvan. nem szeretném a modulban megadni, hogy melyik imagecache sablonnal jelenjen meg a kép, az lenne az igazi, ha azzal a formatterrel jelenne meg, amit a cckban beállítok. az a fura, hogy a d.o -s doksi szerint (cck/developer.txt -ben volt a link) ezt a drupal_render -el tudom megcsinálni, de mégse. vagy csak én nem értek valamit rendesen.
-
clear: both;
Nem itt lehet a gond, mert ha
Nem itt lehet a gond, mert ha megnézed mi van a common.inc:2814-en, akkor ezt leled (drupal_render egyébként):
Tehát alacsony szinten a gondja hogy a '#pre_render' az nem array(). Ezek után az a kérdés hogy honnan gondolja hogy a $node->field_fokep-ben (amit beküldtél) van '#pre_render'? :)
Ui.: Ajánlom figyelmedbe az XDebug-ot vagy hasonló finomságot, azzal lehet léptetni a kódot.
Ui2.: Lehet ám hogy ez a pre_render dolog nem a te drupal_render() hívásodból jön.
--
Tolmács Márk
Drupal bandita