HTML'yi gövde kapanış etiketinden hemen önce nasıl eklerim?


8

Kapatma gövdesi etiketinden önce bir sayfaya rastgele HTML içeriği eklemenin en iyi yolunu arıyorum, sayfanın drupal_add_js()altına JavaScript ekler.

Bir Wordpress geçmişinden geliyorum ve Wordpress'te bu wp_footer()kanca kullanılarak gerçekleştirilebilir .

Kullanmaya baktım hook_page_alter(), ancak bunun bunu yapmanın doğru yolu olup olmadığını veya bu görevi yerine getirmenin daha iyi bir yolu olup olmadığını merak ediyordum.


1
Buna benzer sorular her zaman ortaya çıkıyor ve her zaman nedenini merak ediyorum , "vücut etiketinden hemen önce HTML eklemek" gerekli. Bana öyle geliyor ki yanlış yaptığınız her şeye yaklaşıyor musunuz?
Letharion

1
Neden diğerlerinin yapmak istediği için konuşamıyorum, ancak benim durumumda, onları gerektiren bloklar için sayfaya Underscore JS şablonları ekliyorum. Ancak, birden fazla blok bir şablon kullanabilir, bu yüzden yüklenip yüklenmediğini kolayca görebilmem için tüm şablonları sayfanın altına eklemek istedim. Benim için temelde estetik / rahatlık.
drebabels

Yavaş olursam özür dilerim, ama bu benim için anlamlı değil mi? #Attached , formlardan daha fazla kullanılabilir önbellek / toplama / vb yararları ile , hala nedenini anlamıyorum.
Letharion

#Atched'un çok yönlülüğünün farkında değildim, bu yüzden bana tanıttığınız için teşekkür ederim. Ancak benim durumumda bu şablon dosyalarının içeriğini sayfaya yazıyorum (sadece dosyalara bağlanmakla kalmıyor), bu yüzden yanılıyorsam beni düzeltin ama bu durumda # ekli maddenin önbellek / toplama yararlarını düşünmüyorum çünkü gerçek sayfa önbelleklemesi bununla ilgilenecektir.
drebabels

Yanıtlar:


23

Drupal 6'da kullanılan hook_footer () öğesine eşdeğer, hook_page_build () öğesini uygulamak $page['page_bottom']ve aşağıdakine benzer bir kod kullanarak içeriğini değiştirmektir :

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

İçeriği , aşağıdaki kod kullanılarak html.tpl.php$page['page_bottom'] dosyasından çıkarılır :

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

Değeri , aşağıdaki kod kullanılarak template_process_html ()$page_bottom öğesinden başlatılır :

  // 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');

Arasındaki fark hook_page_alter () ve hook_page_build()olmasıdır hook_page_alter()sonra çalıştırılır hook_page_build()ve değiştirmek için kullanılmalıdır veya sırasında kaldırma içeriği, başka bir modül tarafından eklenen hook_page_build()sayfaya yeni içerik eklemek için kullanılır.


Bu cevapla yukarıda ve öteye gittiğin için teşekkürler. Bu çok yardımcı.
drebabels
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.