2010-08-15 10 views
1

J'ai besoin d'afficher du code HTML/traitement personnalisé avant de pouvoir afficher un formulaire Drupal. Comment puis-je retourner le code HTML personnalisé et le formulaire? Le code que j'ai est:Besoin d'ajouter du code HTML personnalisé avant qu'un formulaire ne soit retourné ..Comment?

function myfunction() { 
    global $base_path, $base_url; 
    $output = ""; // Clear the variable, just in case 
    include ('includes/SOME_HTML_OUTPUT.inc'); 
    return $output; //NOT GOING TO WORK 
    return drupal_get_form('my_form'); 
} 

Répondre

5

La bonne façon de faire ce que vous voulez est:

function myfunction() { 
    $output = theme('your_theme_function'); // Create your custom markup. 
    $output .= drupal_get_form('my_form'); // Create the form markup. 
    return $output; 
} 

Votre fonction thème doit gérer la création de votre balisage personnalisé. Cela peut être fait avec une fonction php ou en utilisant un template et une fonction de pré-traitement.

La jolie chose que l'approche ci-dessus est que vous vous brancher sur le système de thème Drupal et gagner en flexibilité. Si un concepteur veut changer le HTML, il peut le faire comme il le ferait normalement. Vous avez également la possibilité d'ajouter des suggestions de modèles et d'autres bien lorsque vous utilisez le système de thème Drupal.

Dans votre cas spécifique, vous savez peut-être que vous avez besoin de toutes ces bonnes choses, que Drupal fournit, mais vous devriez toujours prendre l'habitude de coder comme ceci. Cela rendra vos modules plus flexibles. Aussi, si jamais vous voulez apporter quelque chose sous la forme d'un module sur drupal.org, coder comme ceci est un must absolu, si vous voulez que votre module soit utilisable par d'autres.

+0

Comme d'habitude, vos réponses sont très complètes et détaillées. Je vous remercie. – jini

0

Qu'est-ce que la fonction drupal_get_form() produit? juste html?

vous pouvez le faire: return $output.drupal_get_form('my_form');

????

+0

Cela fonctionnera réellement, mais c'est une façon fondamentalement incorrecte de le faire avec Drupal. – googletorp

+0

@googletorp, Soyez plus précis. * Pourquoi * est-ce mal de le faire de cette façon? – zrajm

0

veuillez clarifier votre question.

do est-ce que/SOME_HTML_OUTPUT.inc devrait produire $output? où inclut/SOME_HTML_OUTPUT.inc exactement placé?

et jetez un oeil à module_load_include API. ça pourrait aider.