it-swarm.asia

كيف أقوم بإدراج HTML قبل علامة إغلاق النص مباشرة؟

أنا أبحث عن أفضل طريقة لإدراج محتوى HTML عشوائي في صفحة قبل علامة إغلاق النص ، على غرار الطريقة التي تضيف بها drupal_add_js() JavaScript إلى أسفل الصفحة.

أنا قادم من خلفية Wordpress وفي Wordpress يمكن تحقيق ذلك باستخدام الخطاف wp_footer().

لقد نظرت في استخدام hook_page_alter() ، لكنني كنت أتساءل عما إذا كانت هذه هي الطريقة الصحيحة للقيام بذلك أو إذا كانت هناك طريقة أفضل لإنجاز هذه المهمة.

8
drebabels

يعادل hook_footer () الذي تم استخدامه في Drupal 6 هو تنفيذ hook_page_build () ، وتغيير محتوى $page['page_bottom'] ، باستخدام رمز مشابه لما يلي:

function mymodule_page_build(&$page) {
  $page['page_bottom']['devel'] = array(
    '#weight' => 25, 
    '#markup' => '<div style="clear:both;">' . devel_query_table() . '</div>',
  );
}

يتم إخراج محتوى $page['page_bottom'] من html.tpl.php ، باستخدام الكود التالي:

  <?php print $page_top; ?>
  <?php print $page; ?>
  <?php print $page_bottom; ?>
</body>
</html>

تتم تهيئة قيمة $page_bottom من template_process_html () باستخدام الكود التالي:

  // Render page_top and page_bottom into top level variables.
  $variables['page_top'] = drupal_render($variables['page']['page_top']);
  $variables['page_bottom'] = drupal_render($variables['page']['page_bottom']);
  // Place the rendered HTML for the page body into a top level variable.
  $variables['page'] = $variables['page']['#children'];
  $variables['page_bottom'] .= drupal_get_js('footer');

الفرق بين hook_page_alter () و hook_page_build() هو أن hook_page_alter() يتم تنفيذها بعد hook_page_build() ويجب استخدامها لتغيير المحتوى أو إزالته تمت إضافتها بواسطة وحدة نمطية أخرى ، بينما يجب استخدام hook_page_build() لإضافة محتوى جديد إلى الصفحة.

23
kiamlaluno