it-swarm-eu.dev

Jak mohu použít hook_nodeapi ()?

Na internetu jsem našel příklad: Transformovat pole CCK na obsah těla .

function riddle_nodeapi(&$node, $op, $teaser, $page) {
  if ($node->type == "historia") {
    switch ($op) {
      case 'view':
        if ($node->field_svar[0]['value'] != "" AND $page == 1) {
          $svar = '<form><fieldset class="collapsible collapsed">
            <legend>Svar</legend>
            <div>'.$node->field_svar[0]['value'].'</div>
            </fieldset></form>';

          $node->content['riddle'] = array(
            '#value' => $svar,
            '#weight' => 0,
          );

          if (is_array($node->content['field_svar'])) {
            unset($node->content['field_svar']);
          }
        }

        break;
    }
  }
}

Nevím, co je účelem následujícího kódu. Proč bych to měl používat?

 if (is_array($node->content['field_svar'])) {
   unset($node->content['field_svar']);
 }

Jak se používají argumenty hook_nodeapi()$a3 A a4?
Pokud v případě operace zobrazení nastavím $ a3 na true nebo 1, ovlivní tělo pouze teaser uzlu? Mám pravdu?

4
enjoylife

Následující kód se používá, protože modul již vykresluje pole CCK a chce se vyhnout tomu, že Drupal vykreslí obsah tohoto pole).

if (is_array($node->content['field_svar'])) {
  unset($node->content['field_svar']);
}

Bez použití tohoto kódu se obsah pole zobrazí dvakrát: jednou uvnitř sady polí a jednou mimo tuto sadu polí.

Poslední parametry použité pro hook_nodeapi() jsou popsány v dokumentaci jako:

$ a3

  • Pro "view" předává parametr $ teaser z node_view ().
  • Pro "ověření" předá parametr $ form z node_validate ().

$ a4

  • Pro "view" předá parametr $ page from node_view ().

To znamená, že když je operace "view", $a3 Je TRUE, když Drupal zobrazuje ukázku (a FALSE when = Drupal zobrazuje celý obsah uzlu) a $a4 Je PRAVDA, když se uzel zobrazuje na stránce samostatně (a FALSE, když se uzel zobrazuje společně další uzly na stejné stránce).
Abychom pochopili význam různých hodnot zadaných pro $a4, $a4 Je TRUE, když Drupal, pro příklad stránka http://example.com/node/1 (kde stejná stránka zobrazuje pouze uzel); její hodnota je FALSE when Drupal vizualizuje přední stránku a na přední stránku je povýšen více než jeden uzel.

4
kiamlaluno