Explore block module in Drupal
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);
}
}

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Moondrop a lancé les véritables écouteurs sans fil Block pour les amateurs d'audio qui s'assoient confortablement dans l'oreille externe. Contrairement aux écouteurs coincés dans les conduits auditifs, le Block ne provoque pas de sensation d’oreille bouchée et ne collecte pas de cérumen. Le pilote de 13 mm est inclus

Rédacteur en chef du Machine Power Report : Wu Xin La version domestique de l'équipe robot humanoïde + grand modèle a accompli pour la première fois la tâche d'exploitation de matériaux flexibles complexes tels que le pliage de vêtements. Avec le dévoilement de Figure01, qui intègre le grand modèle multimodal d'OpenAI, les progrès connexes des pairs nationaux ont attiré l'attention. Hier encore, UBTECH, le « stock numéro un de robots humanoïdes » en Chine, a publié la première démo du robot humanoïde WalkerS, profondément intégré au grand modèle de Baidu Wenxin, présentant de nouvelles fonctionnalités intéressantes. Maintenant, WalkerS, bénéficiant des capacités de grands modèles de Baidu Wenxin, ressemble à ceci. Comme la figure 01, WalkerS ne se déplace pas, mais se tient derrière un bureau pour accomplir une série de tâches. Il peut suivre les commandes humaines et plier les vêtements

Au cours du processus de développement de Python, nous rencontrons souvent des erreurs de module introuvable. La manifestation spécifique de cette erreur est que Python signale l'une des deux erreurs suivantes : ModuleNotFoundError ou ImportError lors de l'importation du module. Cette erreur est très ennuyeuse et peut empêcher le programme de fonctionner correctement, c'est pourquoi dans cet article, nous explorerons les causes de cette erreur et comment la résoudre. ModuleNotFoundError et ImportError dans Pyth

Dans la version Java9, le langage Java a introduit un concept très important : le module. Si vous êtes familier avec la gestion modulaire du code JavaScript, vous devriez vous sentir familier lorsque vous verrez la gestion modulaire de Java 9. 1. Qu'est-ce que le module Java ? Un peu similaires aux packages Java, les modules introduisent un autre niveau de regroupement du code Java. Chacun de ces groupes (modules) contient de nombreux sous-packages. Déclarez le dossier et ses sous-dossiers en tant que module en ajoutant le fichier module-info.java à la racine du package de fichiers de code source d'un module. La syntaxe du fichier

1. Confirmez d'abord le noyau du système Linux [root@localhost~]#uname-r-p2.6.18-194.el5i6862. Accédez à http://sourceforge.net/projects/linux-ntfs/files/ pour télécharger le package RPM. du noyau correspondant. Si vous ne trouvez pas exactement le même, vous pouvez trouver le plus proche. Je n'ai pas trouvé exactement le même. Ce que j'ai téléchargé est : kernel-module-ntfs-2.6.18-128.1.1.el5-2.1.27-0.rr.10.11.i686.rpm3 Installez le package rpm rpm. -ivhkernel -m

Configuration de Drupal Drupal est un système de gestion de contenu PHP open source avec une architecture assez complexe. Il dispose également d’un modèle de sécurité solide. Grâce aux contributions et au maintien des développeurs de la communauté, il existe de nombreuses documentations détaillées et méthodes pour renforcer la configuration de sécurité des sites Drupal. N'oubliez pas que Drupal est requis pour faire fonctionner votre site Web. Pour protéger l’ensemble du système contre les pirates informatiques, nous devons nous occuper de l’ensemble du système. Il comprend certains paramètres de serveur courants, la configuration des serveurs Web, PHP et des bases de données. De plus, tous les autres services sur le serveur doivent être configurés correctement. Il fournit des conseils et des points clés qui peuvent aider les administrateurs de serveurs et de sites Web à auditer la sécurité de l'ensemble de leur système. Nous devons comprendre que créer un absolu

Quelle monnaie est THE ? THE (Tokenized Healthcare Ecosystem) est une monnaie numérique qui utilise la technologie blockchain pour se concentrer sur l'innovation et la réforme dans le secteur de la santé. La mission de THE coin est d'utiliser la technologie blockchain pour améliorer l'efficacité et la transparence de l'industrie médicale et promouvoir une coopération plus efficace entre toutes les parties, y compris les patients, le personnel médical, les sociétés pharmaceutiques et les institutions médicales. La valeur et les caractéristiques de THE Coin Tout d'abord, THE Coin, en tant que monnaie numérique, présente les avantages de la blockchain - décentralisation, haute sécurité, transactions transparentes, etc., permettant aux participants de faire confiance et de s'appuyer sur ce système. Deuxièmement, le caractère unique de LA pièce est qu'elle se concentre sur l'industrie médicale et de la santé, en utilisant la technologie blockchain pour transformer le système médical traditionnel et améliorer

Comment améliorer les performances d'un site Web Drupal avec l'optimisation PHP-FPM Résumé : Drupal est un système de gestion de contenu puissant, mais des goulots d'étranglement en termes de performances peuvent survenir lors du traitement d'un grand nombre de requêtes. Cet article expliquera comment utiliser PHP-FPM pour optimiser les performances des sites Web Drupal, notamment en ajustant les paramètres de configuration de PHP-FPM, en utilisant le gestionnaire de processus et en utilisant la mise en cache, etc., et donnera également des exemples de code spécifiques. Ajustez les paramètres de configuration de PHP-FPM pour augmenter le nombre maximum de processus et le nombre maximum de requêtes de PHP-FPM
