जवाबों:
ड्रुपल 7 के लिए:
अपने कस्टम मॉड्यूल में हुक_ब्लॉक_इनफो और हुक_ब्लॉक_व्यू हुक का उपयोग करें । हुक_ब्लॉक_इन्फो ब्लॉक को परिभाषित करता है। यह व्यवस्थापक > संरचना > ब्लॉकों में दिखाई देगा । * hook_block_view * सामग्री प्रदर्शित करता है। Drupal API से नीचे के उदाहरण देखें।
हुक_ब्लॉक_इन्फो का उदाहरण, जहां दो ब्लॉक परिभाषित किए गए हैं (शीर्षक और हाल की सामग्री):
<?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;
}
?>
हुक_ब्लॉक_व्यू का उदाहरण:
<?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;
}
?>
हुक की पूरी सूची के लिए Drupal.org पर ब्लॉक एपीआई पेज देखें । Drupal 6 थोड़ा अलग है। कोई हुक_ब्लॉक_व्यू हुक नहीं है; इसके बजाय ब्लॉक घोषित करने के लिए हुक_ब्लॉक का उपयोग करें ।
Drupal 6 के लिए, संक्षिप्त उत्तर यह है कि आप एक कस्टम मॉड्यूल बनाते हैं जो हुक_ब्लॉक को लागू करता है ।
Drupal 7 के लिए, आप ब्लॉक एपीआई का उपयोग करते हैं ।
यदि यह मॉड्यूल विकास में आपका पहला कदम है, तो मैं प्रो Drupal विकास या Pro Drupal 7 विकास की अत्यधिक अनुशंसा करता हूं । बहुत ज्यादा सब कुछ तुम्हें पता करने की जरूरत है वहाँ में है।
आप शायद वही देख रहे होंगे जो मैं ढूंढ रहा था और यहाँ पाया:
/modules/block/block.module:
/modules/block/block.module block_custom_block_save ($ संपादित करें, $ डेल्टा)।
लेकिन जब आप इस फ़ंक्शन को देखते हैं तो आप देखेंगे कि आप केवल db_update कर सकते हैं।
db_update('block_custom')
->fields(array(
'body' => $edit['body']['value'],
'info' => $edit['info'],
'format' => $edit['body']['format'],
))
->condition('bid', $delta)
->execute();
Drupal 7 में, पर एक नज़र block_add_block_form_submit
में modules/block/block.admin.inc
।
यह नियमित ब्लॉक निर्माण फॉर्म है; यह केवल दूसरे फ़ंक्शन को कॉल करने के बजाय सीधे रिकॉर्ड सम्मिलित करने के लिए प्रकट होता है। ध्यान दें कि ब्लॉक तालिका में प्रत्येक रिकॉर्ड एक ही विषय से जुड़ा हुआ है (आप केवल सक्रिय एक का उपयोग कर सकते हैं लेकिन यह अन्य विषयों के लिए रिकॉर्ड सम्मिलित करने के लिए सुरक्षित है)।
Block_custom तालिका सामग्री रखती है।
आप ब्लॉक को निर्यात करने के लिए फीचर्स एक्स्ट्रा मॉड्यूल का उपयोग कर सकते हैं ।
वैकल्पिक रूप से, सीधे ब्लॉक तालिका में सीधे रिकॉर्ड बनाएं।
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)