Comment Drupal 7 pour le Rendu d'une Page?
Comment Drupal 7 pour le rendu d'une page? Ce qui est équivalent à un MVC vue du système.
Quand il s'agit de calculer le HTML final page pour une requête, la plupart des frameworks PHP (MVC) j'ai travaillé avec de prendre une approche où un haut niveau de mise en page/page PHP fichier définit la base de la structure du document, puis rend notre de plusieurs sous-vues via comprend ou afficher les méthodes de rendu.
//Simplified version
Page.phtml
Head.phtml
Body.phtml
Banner.phtml
Topnav.phtml
Left.phtml
Content.phtml
Footer.phtml
Je suis un peu confus quant à Drupal de prendre sur cette. Je suis en train de lire par le biais du Développement de Drupal, et ça commence dans les mêmes territoire avec un page.tpl.php
. Cependant, il glisse sur la façon dont le moteur de thème (est-ce le bon terme?) obtient les différentes parties de PHP dans cette page (pas une critique, le livre prend une approche différente de la voie que je suis sur).
Aussi, Drupal 7 thèmes ne semblent pas avoir la page.tpl.php
fichier, donc ce n'est pas clair (pour moi) où la page squelette vient de. Aussi, à partir de ce que j'ai lu, il semble que les "Blocs" sont en cause, mais il n'est pas clair pour moi si les "Blocs" de maquillage de la totalité de la page, ou si les blocs sont quelque chose utilisée de manière sélective par thèmes.
Donc, en travaillant de haut niveau des concepts (ou aussi détaillée que vous le souhaitez), comment Drupal 7 pour le rendu d'une page?
Je me rends compte que vous pouvez, et devraient probablement commencer avec Drupal sans comprendre comment tout ce qui relie. Je suis spécialement à essayer d'apprendre comment les différents Drupal systèmes venir ensemble. Toutes mes excuses pour le peuple, fatigué de la lecture de cet avertissement!
OriginalL'auteur Alan Storm | 2011-02-22
Vous devez vous connecter pour publier un commentaire.
Je pense qu'il y a deux questions. Tout d'abord, comment un même thème/template se rendait, utilisés ou affichés et, deuxièmement, comment fonctionne l'ensemble du site se réunir. Je pense que la deuxième question a déjà été répondu ci-dessus, donc je vais essayer d'expliquer le premier un peu plus.
Tout d'abord, un module (c'est pourquoi le système.module existe, pour toutes ces choses que seul un module peut faire comme la mise en œuvre de hook_menu()) doit définir un thème spécifique de la fonction/modèle existe, en la déclarant dans hook_theme()
En parlant de ça, il y a deux choses différentes qui peuvent être utilisés. Un thème de fonction, qui est une fonction avec le préfixe theme_. Souvent utilisé pour les petits éléments d'une page qui ont une logique plus complexe/PHP comme theme_table(). Et un modèle, qui est un fichier avec l'tpl.php comme page.tpl.php
Utiliser un thème/fonction du modèle, vous pouvez soit appeler thème() comme ceci:
Ou vous pouvez utiliser la nouvelle, dite de la restituable tableau de chose. C'est, fondamentalement, un tableau de données + d'informations dont le thème à utiliser:
La deuxième est préféré parce qu'il signifie qu'il sera sur le thème le plus tard possible et d'autres modules peuvent changer dans les crochets. Le résultat sera exactement le même, drupal_render() va alors appeler thème() elle-même pendant le rendu final.
Lors de thème() est appelé, il cherche la fonction/le fichier à utiliser, regarde s'il a été remplacé le thème utilisé, s'il y a donc appelé modèle de suggestions et les utilise.
Pour remplacer un thème en fonction d'un thème, de le copier sur votre template.php fichier et remplacer "theme_" avec "yourthemename_", si c'est un tpl.php fichier, le copier dans votre répertoire.
Maintenant, ce que le rendu final du processus est fait, c'est essentiellement la construction d'un grand $tableau page, qui est un restituable array (une partie de la documentation est en hook_page_alter() et ensuite appeler drupal_render().
La structure globale de la page/le modèle de la hiérarchie (ce qui n'est pas codé en dur, mais vu à travers tout ce qui est dans $page) est quelque chose comme ceci:
Presque tout est un bloc dans Drupal 7, y compris le contenu réel, qui est généralement un nœud. Définit un thème qui les régions, il a et puis vous pouvez assigner des blocs dans l'INTERFACE utilisateur.
OriginalL'auteur Berdir
Pour essayer de comprendre comment les modèles de l'ajustement ensemble, le meilleur outil que j'ai trouvé est le Thème Développeur de module. Il fonctionne un peu comme Firebug et vous permet de cliquer sur les zones d'une page pour voir le thème des fonctions ou les fichiers de modèle sont utilisés pour les différentes parties de la page, avec le "suggestions" qui peut être utilisé pour primordial.
Modèles peuvent tenir ensemble dans une variété de façons. Drupal permet de faire quelques hypothèses sur la façon dont ils vont être imbriquées, qui sont reflétées dans la valeur par défaut des variables disponibles dans les fichiers de templates. Toutefois, le modèle de suggestions et la les variables disponibles au sein de leur peut être modifié.
si je comprends bien, page.tpl.php a été remplacé par html.tpl.php dans Drupal 7.La meilleure description que j'ai entendu parler de "Blocs", c'est qu'ils sont ce que vous utilisez pour afficher du contenu qui sera ré-utilisée dans les différentes zones du site. L'utilisation la plus courante est pour les barres latérales, telles que "Récemment mis à jour les pages des listes" ou "Qui est en ligne maintenant" listes.
Oui, n'importe quel core/système de fichier de modèle peut être remplacée par de copier le fichier dans votre répertoire de thème et de le modifier au besoin. Juste être sûr d'effacer le thème de cache, pour que le nouveau fichier pour être reconnu: drupal.org/node/337176
Je ne pense pas que html.tpl.php remplacé page.tpl.php. J'ai peut-être tort, mais pour autant que je comprends, page.tpl.php convient pour l'intérieur <body>, html.tpl.php pour <body>, et ce qui est extérieur à elle.
Merci @Richard, j'ai corrigé ma réponse.
OriginalL'auteur Matt V.
Essayez de prendre un coup d'oeil un exposé sur la Façon dont les pages sont construites sur Drupal 7 de drupalcon à http://sf2010.drupal.org/conference/sessions/page-render-drill-down-drupal-7 spécialement après 5 minutes à partir du début (05:10). Désolé peut pas spécifier plus de détails ici car j'ai encore regarder mon auto. Et essayer de le comprendre ainsi. 😉
[Mise à jour]
Après montre la présentation ici est ma conclusion rapide sur la façon de drupal 7 pour le rendu d'une page:
Au lieu de l'approche commune qui vous mentionnez votre question
Drupal rendre une page grâce à un rendu approche par les flux comme ce
que diverses parties est servi à partir de rendu de flux de numéro 3 (page_callback) par le biais de flux de numéro 6 (drupal_render($page)) où son départ pour retourner un tableau de drupal rendu de la mesure tableau ci dans votre thème, vous pouvez utiliser le $page variable (servi à partir de drupal_render($page)) pour le rendu j'.e de contenu drupal.
OriginalL'auteur Gajahlemu