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.phpdosyasında şuna benzeyen bir işlev oluşturun:
function mytheme_preprocess_node(&$variables) {
}
mythemeTemanı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, $submittedyazar 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.phpbir dizilimin bulunduğu $pageyerleri doldurmak istersiniz $variables['page'].
Sorun olduğunu $pageiçinde node.tpl.phpzaten 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, $regionyerine 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_firstOluş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.