Yanıtlar:
Drupal 7 için:
Özel modülünüzde hook_block_info ve hook_block_view kancalarını kullanın . hook_block_info bloğu tanımlar. Yönetici > yapı > bloklarda görünecektir . * hook_block_view * içeriği görüntüler. Drupal API'sından aşağıdaki örneklere bakın.
İki bloğun tanımlandığı hook_block_info örneği (Syndicate ve Recent içeriği başlıklı)
<?php
function hook_block_info() {
// This example comes from node.module.
$blocks['syndicate'] = array(
'info' => t('Syndicate'),
'cache' => DRUPAL_NO_CACHE,
);
$blocks['recent'] = array(
'info' => t('Recent content'),
// DRUPAL_CACHE_PER_ROLE will be assumed.
);
return $blocks;
}
?>
Hook_block_view örneği:
<?php
function hook_block_view($delta = '') {
// This example is adapted from node.module.
$block = array();
switch ($delta) {
case 'syndicate':
$block['subject'] = t('Syndicate');
$block['content'] = array(
'#theme' => 'feed_icon',
'#url' => 'rss.xml',
'#title' => t('Syndicate'),
);
break;
case 'recent':
if (user_access('access content')) {
$block['subject'] = t('Recent content');
if ($nodes = node_get_recent(variable_get('node_recent_block_count', 10))) {
$block['content'] = array(
'#theme' => 'node_recent_block',
'#nodes' => $nodes,
);
}
else {
$block['content'] = t('No content available.');
}
}
break;
}
return $block;
}
?>
Kancaların tam listesi için Drupal.org'daki Bloklar API sayfasına bakın . Drupal 6 biraz farklı. Hook_block_view hook yok; bunun yerine blokları bildirmek için hook_block kullanın.
Drupal 6 için kısa cevap, hook_block'u uygulayan özel bir modül yaratmanızdır .
Drupal 7 için, Blok API'sini kullanırsınız .
Bu, modül geliştirmeye ilk adımınız ise, Pro Drupal Development veya Pro Drupal 7 Development ürününü tavsiye ederim . Bilmeniz gereken her şey orada.
Aradığımı arıyor ve burada bulmuş olabilirsin:
/modules/block/block.module:
block_custom_block_save ($ edit, $ delta).
Ancak bu fonksiyona baktığınızda sadece db_update'i kendiniz yapabileceğinizi göreceksiniz.
db_update('block_custom')
->fields(array(
'body' => $edit['body']['value'],
'info' => $edit['info'],
'format' => $edit['body']['format'],
))
->condition('bid', $delta)
->execute();
Drupal 7 yılında bakmak block_add_block_form_submit
içinde modules/block/block.admin.inc
.
Bu normal blok oluşturma şeklidir; kayıtları başka bir işlevi çağırmak yerine doğrudan eklemek gibi görünüyor. Blok tablosundaki her bir kaydın tek bir temaya bağlı olduğunu unutmayın (yalnızca etkin olanı kullanabilirsiniz, ancak tüm temalar için kayıt eklemek daha güvenlidir).
Block_custom tablo içeriğini bulundurur.
Blokları dışa aktarmak için Features Ekstra modülünü kullanabilirsiniz.
Alternatif olarak, doğrudan bloklar tablosunda kayıtları oluşturun.
INSERT INTO blocks (
module, delta, theme, status, weight, region, custom,
throttle, visibility, pages, title, cache)
VALUES (
'views','blog-block_1','mytheme',1,10,'sidebar_first',0,0,1,'blog\r\nblog/*','',-1)