Yanıtlar:
Herhangi bir şablonun içindeki bölgeleri yazdırabilirsiniz, ancak şablondaki kutudan kullanılamazlar node.tpl.php
. Bunları kullanılabilir yapmak için, node.tpl.php
şablonunuzda kullanmak üzere tüm bölge içeriğini içerecek yeni bir değişken oluşturacaksınız .
Yeni şablon değişkenleri oluşturmak bir ön işleme fonksiyonu kullanılarak yapılır. Temanızın template.php
dosyasında şuna benzeyen bir işlev oluşturun:
function mytheme_preprocess_node(&$variables) {
}
mytheme
Temanızın kısa adı ile değiştiriliyor . Şimdi, Drupal'ın bu yeni önişleme işlevini tanıması için sitenizin tema kayıt defterini yeniden oluşturmanız gerekir. Bu, Yapılandırma → Geliştirme → Performans seçeneğine gidip üst kısımdaki "Tüm önbellekleri temizle" düğmesine basmak kadar basittir .
Şimdi, ön işleme işlevlerinin çalışma şekli, $variables
şablonunuzun kullanılabilir değişkenlerine karşılık gelen bir dizi içerir. Örneğin, node.tpl.php
, $submitted
yazar yazar bilgisi içerir. Yukarıdaki ön işleme işlevinde, içinde bulunur $variables['submitted']
.
İçinde bulunduğunuz şeyleri taklit etmek için, tüm bölgeleri içeren page.tpl.php
bir dizilimin bulunduğu $page
yerleri doldurmak istersiniz $variables['page']
.
Sorun olduğunu $page
içinde node.tpl.php
zaten sen kendi başına veya bir girişte düğüm bakıyoruz olmadığını bildiren bir doğru / yanlış değeri ile doldurulur.
Bu nedenle, bu isim çarpışmasını önlemek için, $region
yerine yerleştirin:
function mytheme_preprocess_node(&$variables) {
// Get a list of all the regions for this theme
foreach (system_region_list($GLOBALS['theme']) as $region_key => $region_name) {
// Get the content for each region and add it to the $region variable
if ($blocks = block_get_blocks_by_region($region_key)) {
$variables['region'][$region_key] = $blocks;
}
else {
$variables['region'][$region_key] = array();
}
}
}
Ardından, temanızın node.tpl.php
şablonunda, aşağıdakileri yaparak herhangi bir bölgeyi oluşturabilirsiniz:
<?php print render($region['sidebar_first']); ?>
sidebar_first
Oluşturmak istediğiniz bölgenin adı nerede .
<?php print render(block_get_blocks_by_region('machine_name_of_your_region'));?>
. Buradan: webomelette.com/add-region-node-template
block_get_blocks_by_region()
yalnızca blok dizisini döndürdüğünü ve bir bölge olarak oluşturmak istediğinizde bölge sarmalayıcı eklemeniz gerektiğini unutmayın.