Kodumda oluşturduğum bloklar için bağlamsal bağlantıları nasıl oluştururum?


11

Bir blok konu ve içerik yüklenmiş module_invoke()ve kullanılmış render()onları oluşturma için. Bu blok için bağlamsal bağlantılar kullanmak istiyorum. Nasıl da yapabilirim?

Bu sayfa insde kullanıyorum kodu - front.tpl.php şablonu.

$block = module_invoke('block', 'block_view', '4);
print render($block);

Bunun yerine hangi kodu kullanmalıyım?

Yanıtlar:


16
$block = block_load('module', 'delta');
print drupal_render(_block_get_renderable_array(_block_render_blocks(array($block))));

Bunu başarmak için blok modülünden (_ * ()) özel fonksiyonları kullanmamız çok kötü.


OP örnekleri için şöyle olur: $ block = block_load ('block', '4');
Cameron

12

Bart'ın cevabı Katı Standartlar uyarısı verecektir (PHP 5.4'te varsayılan olarak etkindir). Bunu düzeltmek için, yenilenebilir dizi için bir ara değişken kullanın:

$block = block_load('module', 'delta');
$renderable_array = _block_get_renderable_array(_block_render_blocks(array($block)));
print drupal_render($renderable_array);

Uyarının oluşmasının nedeni, drupal_renderişlevin parametresinin başvuru olmasını beklemesidir. İmzası var drupal_render(&$elements). Daha fazla bilgi için bu benzer sorunun cevabına bakınız .


2

Bağlamsal bağlantılar faydalıdır ve uygulanması gerçekten kolaydır. Kullanım durumunuz hook_block_view_alter()için #contextual_links öğeyi ihtiyaçlarınıza uyacak şekilde değiştirmek için uygulamanız gerekir. Bu referanslar size yardımcı olacaktır:

GL :)


1
OP'nin anlamı, programlı olarak bloğu görüntülemesidir, ancak bağlamsal bağlantılar eklenmez.
Bart
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.