Mező elrejtése a bevezetőben

slampy képe

Sziasztok!

Sikerült egy nagyon egyszerű problémát végleg elbonyolítanom. :-)
A probléma az, hogy van egy modulom, annak saját mezői. Ezek közül az egyik mezőt el szeretném rejteni a bevezetőben. Csak akkor látszódjon, ha valaki a teljes tartalomra kattint.

Több megoldást néztem. Próbálkoztam hook_view-val de nem találtam rá megoldást.
A hook_nodeapi-val az volt a problámám, hogy bár működött minden más tartalom típust is átírt. Ez egy kicsit rejtély számomra miért is.

Ami viszont igazán tetszik, amit a CCK tudna, de nem találtam rá dokumentációt csak utalást.
"Third-party modules can expose their own display contexts ($node->build_mode) to the list of available contexts."
Tehát a CCK képes valahogy észrevenni az én mezőimet és ide-oda rendezgetni a "Manage fields" alatt.
Ez a megoldás tetszik igazán. Tudna valaki segíteni?

Természetesen a többi megoldás is érdekelne...

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
Sweetchuck képe

Mutasd a hook_view()-t, főleg azt hogy mit raksz a $node->content -be

0
0
slampy képe

function mymodule_view($node, $teaser = FALSE, $page = FALSE) {
$node = node_prepare($node, $teaser);

$node->content['myfield'] = array(
'#value' => 'Hello'
);

return $node;
}

Csak a value-t töltöm ki...

0
0
Sweetchuck képe

Érdemes használni a $teaser változót. (Ha már egyszer úgy is rendelkezésre áll, meg aztán nélküle egy kicsit nehéz lenne)

if ($teaser) {
  $node->content['myfield_1']['#value'] = 'Ez csak a bevezetőben látszik';
}
 
  $node->content['myfield_2']['#value'] = 'Ez meg mindig';
  //szükség szerint 
  $node->content['myfield_3']['#value'] = theme('mymodule_valami', t('something'));
0
0
slampy képe

Köszi! Ez alapján meg tudtam oldani a problémát, de továbbra is azt gondolom a CCK-s megoldás hatékonyabb és elegánsabb megoldás lenne és továbbra is nagyon érdekel.

A node.example modult hogyan kellene átírni, hogy a CCK lássa a mezőit?
http://api.drupal.org/api/file/developer/examples/node_example.module/6

0
0
Sweetchuck képe

A címben említett kampót kell megvalósítani.
forrás olvasás javasolt content_content_extra_fields().

0
0