Come sostituire _phptemplate_callback in drupal 6

4 contenuti / 0 new
Ultimo contenuto
Come sostituire _phptemplate_callback in drupal 6

Salve!
Sto creando un tema personalizzato in Drupal 6.20.
Quando lavoravo con la versione 5.7 avevo trovato una funzione da inserire nel file template.php che mi permetteva di formattare il blocco di ricerca. Questa funzione cattura la searchbox di default e la visualizza con il layout specificato nel file search-block-form.tpl.php presente nella stessa cartella del tema ed è la seguente:

<?php
function phptemplate_search_block_form ( $form ) {
   
$output = '';
   
$output = _phptemplate_callback ( 'search-block-form' , array( 'form' => $form ));
   
$output = '<div id="search-bar">'. $output. '</div>';
     return
$output;
}
?>

il file search-block-form.tpl.php contiene invece il seguente codice:

<div style="margin-top:10px; margin-left:7px;">
  <input type="text" maxlength="50" name="search_block_form_keys" id="edit-search_block_form_keys"  size="15" value="Ricerca" title="Inserisci il termine di ricerca." class="form-text" />
  <input id="edit-submit" class="form-submit" style="border:0;" type="submit" name="op" value=" " />
  <input type="hidden" name="form_id" id="edit-search-block-form" value="search_block_form"  />
  <input type="hidden" name="form_token" id="a-unique-id" value="<?php print drupal_get_token ( 'search_block_form' ); ?>" />
</div>

Ora, vorrei riutilizzare la stessa funzione nel template che sto creando, solo che con mio grande dispiacere ho scoperto che la funzione _phptemplate_callback non è più supportata dalla versione 6. Come posso modificare il codice?
Sul sito in inglese ho letto un commento in cui si diceva che tale funzione può essere sostituita con theme_render_template [$template_file , $variabile] , ma è una funzione che non ho la più pallida idea di come funzioni.
Chi mi può aiutare??? è urgente!
Grazie

Interessante il tuo questito e la risposta dovrebbe essere questa:

In template.php del tuo tema (!!cambia mytheme con il nome del tuo tema):

<?php
 
function mytheme_theme(&$existing, $type, $theme, $path) {
   
$hooks['search_block_form'] = array(
       
'arguments' => array('form' => NULL),
        );
    return
$hooks;
}
function
mytheme_search_block_form(&$form) {
   
//qui metti l'output del form
   
$form_default = t('SEARCH');
   
$form['search_block_form']['#value'] = $form_default;
   
$form['search_block_form']['#attributes'] = array('id' => 'search-bar');
    return
drupal_render($form);
}
?>

Attenzione non l'ho testata, semplicemente l'ho trovata qui: http://coffeeshopped.com/2009/08/changing-the-search-block-form-text-in-...

Ciao

Grazie per la risposta!
Non ho capito bene la funzione mytheme_search_block_form(&$form). In che senso metto l'output del form? Io ho creato il file search-block-form.tpl a parte. Non dovrebbe caricarlo da lì?
Grazie ancora e scusa l'ignoranza ma con drupal 6 sono alle prime armi!

No problem, anzi scusa se ti rispondo un po in ritardo.
Dopo un po di ricerche ho capito che il file search-block-form.tpl.php è nel module search e con la funzione nel template.php si può personalizzare. A questo serve la function mytheme_search_block_form(&$form) nel template.php. Quest'ultimo si occupa di preprocessare il tema restituendo un output differente: quello nella funzione appunto.

Ho navigato in queste pagine, te le riporto senza fare un copia-incolla di tutto:
http://drupal.org/node/154137 > abbastanza chiaro
http://aronbarbosa.com/content/customizing-your-drupal-search-block-2 > molto chiaro con un buon esempio

Spero che ti sia utile. Ciao