ホームページ php教程 php手册 Explore block module in Drupal

Explore block module in Drupal

Jun 13, 2016 am 10:53 AM
Block drupal explore module the

block.info is the block module description file and the "package" property tells us that block is Drupal core module and it can be configured by menu "admin/structure/block".

 

block.install is executed when block is installed. The purpose of this file is to create the necessary tables: block, block_custom, block_role

 

Table block is used to store the block information declared by code statements;

Table block_custom is used to store the block information created by administration interface;

Table block_role is used to control the visibility of blocks.

The main logic are defined in the block.module file. Let us go around this file.There are lots of functions in block.module,but they can be categorized into two types: hook function and block module internal-used function.hook function includes block_menu, block_theme, block_theme_initialize, block_themes_enable.

Function block_menu:block configuration, block management, block list by theme

[html]   

  $default_theme = variable_get('theme_default', 'bartik');  

  $items['admin/structure/block'] = array(  

    'title' => 'Blocks',  

    'description' => 'Configure what block content appears in your site\'s sidebars and other regions.',  

    'page callback' => 'block_admin_display',  

    'page arguments' => array($default_theme),  

    'access arguments' => array('administer blocks'),  

    'file' => 'block.admin.inc',  

  );  

  $items['admin/structure/block/manage/%/%'] = array(  

    'title' => 'Configure block',  

    'page callback' => 'drupal_get_form',  

    'page arguments' => array('block_admin_configure', 4, 5),  

    'access arguments' => array('administer blocks'),  

    'file' => 'block.admin.inc',  

  );  

  $items['admin/structure/block/manage/%/%/configure'] = array(  

    'title' => 'Configure block',  

    'type' => MENU_DEFAULT_LOCAL_TASK,  

    'context' => MENU_CONTEXT_INLINE,  

  );  

  $items['admin/structure/block/manage/%/%/delete'] = array(  

    'title' => 'Delete block',  

    'page callback' => 'drupal_get_form',  

    'page arguments' => array('block_custom_block_delete', 4, 5),  

    'access arguments' => array('administer blocks'),  

    'type' => MENU_LOCAL_TASK,  

    'context' => MENU_CONTEXT_NONE,  

    'file' => 'block.admin.inc',  

  );  

  $items['admin/structure/block/add'] = array(  

    'title' => 'Add block',  

    'page callback' => 'drupal_get_form',  

    'page arguments' => array('block_add_block_form'),  

    'access arguments' => array('administer blocks'),  

    'type' => MENU_LOCAL_ACTION,  

    'file' => 'block.admin.inc',  

  );  

  foreach (list_themes() as $key => $theme) {  

    $items['admin/structure/block/list/' . $key] = array(  

      'title' => check_plain($theme->info['name']),  

      'page arguments' => array($key),  

      'type' => $key == $default_theme ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK,  

      'weight' => $key == $default_theme ? -10 : 0,  

      'access callback' => '_block_themes_access',  

      'access arguments' => array($theme),  

      'file' => 'block.admin.inc',  

    );  

    if ($key != $default_theme) {  

      $items['admin/structure/block/list/' . $key . '/add'] = array(  

        'title' => 'Add block',  

        'page callback' => 'drupal_get_form',  

        'page arguments' => array('block_add_block_form'),  

        'access arguments' => array('administer blocks'),  

        'type' => MENU_LOCAL_ACTION,  

        'file' => 'block.admin.inc',  

      );  

    }  

    $items['admin/structure/block/demo/' . $key] = array(  

      'title' => check_plain($theme->info['name']),  

      'page callback' => 'block_admin_demo',  

      'page arguments' => array($key),  

      'type' => MENU_CALLBACK,  

      'access callback' => '_block_themes_access',  

      'access arguments' => array($theme),  

      'theme callback' => '_block_custom_theme',  

      'theme arguments' => array($key),  

      'file' => 'block.admin.inc',  

    );  

  }  

  return $items;  

}  

Function block_theme: offers two theme options: block is for front-end and block_admin_display_form is for administration interface

[html]  

function block_theme() {  

  return array(  

    'block' => array(  

      'render element' => 'elements',  

      'template' => 'block',  

    ),  

    'block_admin_display_form' => array(  

      'template' => 'block-admin-display-form',  

      'file' => 'block.admin.inc',  

      'render element' => 'form',  

    ),  

  );  

}  

Function block_theme_initialize: assign the blocks to theme's regions

[php]  

function block_theme_initialize($theme) {  

  // Initialize theme's blocks if none already registered.  

  $has_blocks = (bool) db_query_range('SELECT 1 FROM {block} WHERE theme = :theme', 0, 1, array(':theme' => $theme))->fetchField();  

  if (!$has_blocks) {  

    $default_theme = variable_get('theme_default', 'bartik');  

    // Apply only to new theme's visible regions.  

    $regions = system_region_list($theme, REGIONS_VISIBLE);  

    $result = db_query("SELECT * FROM {block} WHERE theme = :theme", array(':theme' => $default_theme), array('fetch' => PDO::FETCH_ASSOC));  

    foreach ($result as $block) {  

      // If the region isn't supported by the theme, assign the block to the theme's default region.  

      if ($block['status'] && !isset($regions[$block['region']])) {  

        $block['region'] = system_default_region($theme);  

      }  

      $block['theme'] = $theme;  

      unset($block['bid']);  

      drupal_write_record('block', $block);  

    }  

  }  

}  

Function block_themes_enable: iterate the theme list and assign block list to its regions. 

[html]  

function block_themes_enabled($theme_list) {  

  foreach ($theme_list as $theme) {  

    block_theme_initialize($theme);  

  }  

}  

 

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Moondrop が低遅延ゲームモードを備えたブロック完全ワイヤレスイヤホンをリリース Moondrop が低遅延ゲームモードを備えたブロック完全ワイヤレスイヤホンをリリース Aug 10, 2024 pm 03:31 PM

Moondrop は、オーディオ愛好家向けに、外耳に快適にフィットする Block 完全ワイヤレス イヤホンをリリースしました。外耳道に詰まったイヤフォンとは異なり、ブロックは耳の詰まり感を引き起こしたり、耳垢を集めたりしません。 13mmドライバーを同梱

2か月後、人型ロボットWalker Sが服をたたむことができるようになった 2か月後、人型ロボットWalker Sが服をたたむことができるようになった Apr 03, 2024 am 08:01 AM

Machine Power Report 編集者: Wu Xin 国内版の人型ロボット + 大型模型チームは、衣服を折りたたむなどの複雑で柔軟な素材の操作タスクを初めて完了しました。 OpenAIのマルチモーダル大規模モデルを統合したFigure01の公開により、国内同業者の関連動向が注目を集めている。つい昨日、中国の「ヒューマノイドロボットのナンバーワン株」であるUBTECHは、Baidu Wenxinの大型モデルと深く統合されたヒューマノイドロボットWalkerSの最初のデモを公開し、いくつかの興味深い新機能を示した。 Baidu Wenxin の大規模モデル機能の恩恵を受けた WalkerS は次のようになります。 Figure01 と同様に、WalkerS は動き回るのではなく、机の後ろに立って一連のタスクを完了します。人間の命令に従って服をたたむことができる

ModuleNotFoundError: Python モジュールが見つからないエラーを解決するには? ModuleNotFoundError: Python モジュールが見つからないエラーを解決するには? Jun 25, 2023 pm 09:30 PM

Python の開発プロセスでは、モジュールが見つからないというエラーがよく発生します。このエラーの具体的な症状は、モジュールのインポート時に Python が ModuleNotFoundError または ImportError の 2 つのエラーのいずれかを報告することです。このエラーは非常に厄介で、プログラムが適切に実行されなくなる可能性があるため、この記事では、このエラーの原因とその解決方法を検討します。 Pyth の ModuleNotFoundError と ImportError

Java9の新機能モジュール モジュラープログラミング方式 Java9の新機能モジュール モジュラープログラミング方式 May 19, 2023 pm 01:51 PM

Java9 バージョンでは、Java 言語にモジュールという非常に重要な概念が導入されました。 JavaScript コードのモジュール管理に慣れている場合は、Java 9 のモジュール管理を見ると親しみを感じるはずです。 1. Javaモジュールとは何ですか? Java のパッケージと似ている部分ですが、モジュールは Java コードの別のレベルのグループ化を導入します。このような各グループ (モジュール) には、多くのサブパッケージが含まれています。ファイル module-info.java をモジュールのソース コード ファイル パッケージのルートに追加することにより、フォルダーとそのサブフォルダーをモジュールとして宣言します。ファイルの構文

LinuxシステムでNTFSディスクをマウントするときに「モジュールヒューズが見つかりません」という問題を解決するにはどうすればよいですか? LinuxシステムでNTFSディスクをマウントするときに「モジュールヒューズが見つかりません」という問題を解決するにはどうすればよいですか? Dec 31, 2023 pm 03:17 PM

1. まず、Linux システム カーネル [root@localhost~]#uname-r-p2.6.18-194.el5i6862 を確認し、http://sourceforge.net/projects/linux-ntfs/files/ に移動して rpm パッケージをダウンロードします。まったく同じカーネルが見つからない場合は、最も近いカーネルを見つけることができます。まったく同じものは見つかりませんでした。ダウンロードしたものは次のとおりです: kernel-module-ntfs-2.6.18-128.1.1.el5-2.1.27-0.rr.10.11.i686.rpm3. rpm パッケージ rpm をインストールします-ivhkernel -m

Drupal 構成を分析する方法 Drupal 構成を分析する方法 May 15, 2023 pm 09:22 PM

Drupal の構成 Drupal は、かなり複雑なアーキテクチャを備えたオープン ソースの PHP コンテンツ管理システムです。強力なセキュリティモデルも備えています。コミュニティの開発者の貢献とメンテナンスのおかげで、Drupal Web サイトのセキュリティ構成を強化するための詳細なドキュメントと方法がたくさんあります。ウェブサイトを運営するには Drupal が必要であることに注意してください。システム全体をハッカーから守るには、システム全体に対処する必要があります。これには、いくつかの一般的なサーバー設定、Web サーバー、PHP、データベースの構成が含まれます。さらに、サーバー上の他のサービスも正しく構成する必要があります。サーバーおよび Web サイト管理者がシステム全体のセキュリティを監査するのに役立つヒントと重要なポイントを提供します。絶対的なものを作成することを理解する必要があります。

THE はどの通貨ですか? THE コインは投資する価値がありますか? THE はどの通貨ですか? THE コインは投資する価値がありますか? Feb 21, 2024 pm 03:49 PM

THE とは何ですか? THE (Tokenized Healthcare Ecosystem) は、ブロックチェーン技術を使用してヘルスケア業界のイノベーションと改革に焦点を当てたデジタル通貨です。 THE コインの使命は、ブロックチェーン技術を使用して医療業界の効率と透明性を向上させ、患者、医療スタッフ、製薬会社、医療機関を含むすべての関係者間のより効率的な協力を促進することです。 THE Coin の価値と特徴 まず第一に、THE Coin はデジタル通貨として、分散化、高セキュリティ、透明性のある取引などのブロックチェーンの利点を備えており、参加者はこのシステムを信頼して利用することができます。第二に、THE コインの独自性は、ブロックチェーン技術を使用して従来の医療システムを変革し、改善するために医療および健康産業に焦点を当てていることです。

PHP-FPM 最適化を通じて Drupal Web サイトのパフォーマンスを向上させる方法 PHP-FPM 最適化を通じて Drupal Web サイトのパフォーマンスを向上させる方法 Oct 05, 2023 am 10:09 AM

PHP-FPM 最適化で Drupal Web サイトのパフォーマンスを向上させる方法 概要: Drupal は強力なコンテンツ管理システムですが、大量のリクエストを処理するときにパフォーマンスのボトルネックが発生する可能性があります。この記事では、PHP-FPM の構成パラメーターの調整、プロセス マネージャーの使用、キャッシュの使用など、PHP-FPM を使用して Drupal Web サイトのパフォーマンスを最適化する方法を紹介し、具体的なコード例も示します。 PHP-FPM の構成パラメータを調整して、PHP-FPM のプロセスとリクエストの最大数を増やします。

See all articles