প্রোগ্রামক্রমে ব্লক তৈরির সহজ উপায়? [বন্ধ]


26

ড্রুপাল শিখছি। আমি এখন জানি যে আমি ব্যাকএন্ডের মাধ্যমে ব্লক তৈরি করতে পারি, তবে যদি সম্ভব হয় তবে আমি প্রোগ্রামের ভিত্তিতে এগুলি পূর্ববর্তী করব। আসলে আমি নিশ্চিত যে এটি সম্ভব। তবে সবচেয়ে সহজ উপায় কী?


বিস্তারিত ব্লগ: goo.gl/kD3TZu
সুরেশ কামরুশি

উত্তর:


34

ড্রুপাল 7 এর জন্য:

আপনার কাস্টম মডিউলে হুক_ব্লক_ইনফো এবং হুক_ব্লক_ভিউ হুক ব্যবহার করুন । hook_ block_info ব্লকটি সংজ্ঞায়িত করে। এটি প্রশাসক > কাঠামো > ব্লকগুলিতে প্রদর্শিত হবে । * হুক_ব্লক_ভিউ * সামগ্রীটি প্রদর্শন করে। ড্রুপাল এপিআই থেকে নীচে উদাহরণগুলি দেখুন।

হুক_ব্লক_ইনফো উদাহরণ, যেখানে দুটি ব্লক সংজ্ঞায়িত করা হয়েছে (শিরোনাম সিন্ডিকেট এবং সাম্প্রতিক সামগ্রী):

    <?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 উপর। ড্রুপাল 6 কিছুটা আলাদা। কোনও হুক_ব্লক_ভিউ হুক নেই; পরিবর্তে ব্লক ঘোষণার জন্য হুক_ব্লক ব্যবহার করুন ।


6

ড্রুপাল 6 এর জন্য সংক্ষিপ্ত উত্তরটি হ'ল আপনি একটি কাস্টম মডিউল তৈরি করেন যা হুক_ব্লককে কার্যকর করে

ড্রুপাল 7 এর জন্য, আপনি ব্লক এপিআই ব্যবহার করুন ।

যদি এটি মডিউল বিকাশের ক্ষেত্রে আপনার প্রথম প্ররোচনা হয় তবে আমি প্রো ড্রুপাল ডেভলপমেন্ট বা প্রো ড্রুপাল 7 বিকাশের জন্য উচ্চ পরামর্শ দিচ্ছি । আপনি যা কিছু জানা দরকার তা সেখানে রয়েছে।


দেখে মনে হচ্ছে হুক_ব্লক কেবল পৃথক মডিউলে ব্যবহার করা যেতে পারে: | আমি এখনও পাই না কেন এই জটিলতা ... দ্রুপালের সমস্ত কিছুর জন্য মডিউল থাকা কি স্বাভাবিক অনুশীলন?
জয়য়ারজো

2
হ্যাঁ, মডিউলগুলি দ্রুপালের একটি মূল ধারণা। বেশিরভাগ উপায়ে, দ্রুপাল নিজেই মডিউলগুলির একটি সেট এবং সবকিছু মডিউল হুকের মাধ্যমে সম্পন্ন হয়।
এমপিডোনাডিয়ো

3

আপনি যা খুঁজছিলেন তা সন্ধান করতে পারেন এবং এটি এখানে খুঁজে পেয়েছেন:

/ 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();

2

Drupal এর 7 এ, কটাক্ষপাত করা block_add_block_form_submitমধ্যে modules/block/block.admin.inc

এটি নিয়মিত ব্লক তৈরির ফর্ম; এটি অন্য ফাংশনটি কল করার চেয়ে সরাসরি রেকর্ডগুলি সন্নিবেশ করানো বলে মনে হয়। নোট করুন যে ব্লক টেবিলের প্রতিটি রেকর্ড একটি একক থিমের সাথে লিঙ্কযুক্ত (আপনি কেবল সক্রিয়টি ব্যবহার করতে পারেন তবে সমস্ত থিমের জন্য রেকর্ড সন্নিবেশ করা নিরাপদ)।

Block_custom টেবিল বিষয়বস্তু ঝুলিতে।


1

ব্লক রফতানি করতে আপনি বৈশিষ্ট্যগুলি অতিরিক্ত মডিউল ব্যবহার করতে পারেন ।

বিকল্পভাবে, কেবল ব্লক সারণীতে সরাসরি রেকর্ড তৈরি করুন।

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)

1
অতিরিক্ত মডিউল বা ডাইরেক্ট স্ক্যাল কোয়েরি ... আমার মনে হয় এমন কিছু ক্লিনার থাকা উচিত।
জয়য়ারজো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.