什么将 Drupal Hook 与特定模块联系起来?
在 Drupal 7 中,每个核心模块都有一个“api”文件
$ ls modules/*/*.api.php
modules/aggregator/aggregator.api.php modules/openid/openid.api.php
modules/block/block.api.php modules/overlay/overlay.api.php
modules/comment/comment.api.php modules/path/path.api.php
modules/contextual/contextual.api.php modules/rdf/rdf.api.php
modules/dashboard/dashboard.api.php modules/search/search.api.php
modules/field/field.api.php modules/shortcut/shortcut.api.php
modules/field_ui/field_ui.api.php modules/simpletest/simpletest.api.php
modules/file/file.api.php modules/system/system.api.php
modules/filter/filter.api.php modules/system/theme.api.php
modules/help/help.api.php modules/taxonomy/taxonomy.api.php
modules/image/image.api.php modules/trigger/trigger.api.php
modules/locale/locale.api.php modules/update/update.api.php
modules/menu/menu.api.php modules/user/user.api.php
modules/node/node.api.php
Run Code Online (Sandbox Code Playgroud)
这些文件中的每一个都包含一个从不 (?) 调用的函数,但记录了其他模块(包括第 3 方)可以实现的钩子的存在。
File: modules/path/path.api.php
function hook_path_delete($path) {
db_delete('mytable')
->condition('pid', $path['pid'])
->execute();
}
Run Code Online (Sandbox Code Playgroud)
我的问题:是什么将特定钩子与特定模块联系起来?为什么path_delete钩子包含在path.api.php文件中?为什么entity_view钩子包含在system.api.php文件中?这只是任意的,事后组织,还是 Drupal 系统中是否有将特定钩子与特定模块联系起来的东西?或者是其他东西?
我已经构建了一个具有多个值的自定义字段。我必须将此字段设置为必填字段。但如果至少有一个字段已填写并且最后一个字段为空,我想通过验证。
但我的问题是 Drupal 警告我最后一个(空)字段是必需的。我认为解决hook_field_is_empty()了问题,但是,即使返回 true,表单也无法验证。
非常感谢您的帮助。
执行 :
function MYMODULE_field_widget_form(...) {
$element['address']+=[
...
'#required' => $instance['required'],
];
...
}
function MYMODULE_field_is_empty($item, $field) {
if (empty($item['address']) && empty($item['other'])) {
return true ;
}
return false ;
}
Run Code Online (Sandbox Code Playgroud) 在Drupal中,是什么;$Id$?
我知道我们在.info文件中使用它,它告诉Drupal我们的模块信息.
我的问题是为什么有;$Id$必要?
在hook_css_alter中,我想在特定页面上禁用样式表.可以通过以下代码段获得首页要求:
function morin_css_alter(&$css) {
if(drupal_is_front_page()){
foreach ($css as $data => $item) {
unset($css[$data]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我需要删除相册页面上的特定样式.我想过几种方法可以做到这一点,但我想以drupal方式做到这一点.
我发现最接近的函数是drupal_get_destination(),我不认为这是为了这个,但它确实返回数组中的当前路径,如css_alter钩子中添加的以下片段所示.
echo " PATH = " . var_dump(drupal_get_destination());
Output: PATH = array(1) { ["destination"]=> string(6) "photos" }
Run Code Online (Sandbox Code Playgroud)
这是从函数/钩子中获取路径的推荐方法,还是我应该使用全局命名空间中的某些变量?
我有一个Drupal Module'示例'.我已将模块的管理和客户端功能拆分为两个包含文件example.admin.inc和example.pages.inc.我在example.module文件中声明了常量(define()),可以在pages.inc文件和admin.inc文件中访问它们.
但是如何在集中位置声明普通$变量,以便可以在admin.inc文件和pages.inc文件中访问它们.我试图在example.module中声明$ variable,但无法在example.admin.inc和example.pages.inc中访问它.
有些情况下,print_r的输出非常复杂,冗长且难以阅读,例如对象,嵌套数组,嵌套对象,嵌套数组,......
是否有图书馆或工具来帮助开发人员阅读这些信息?像DOM的DOM检查器?
我在Drupal 7中有一个查询正在搜索自定义表:
$query5 = "SELECT COUNT(reservation_id) as rcount5, reservation_id FROM {reservations} WHERE resource_id = :resource_id AND reservation_date = :reservation_date AND start_time BETWEEN :start_time AND :end_time";
$result5 = db_query($query5, array(':resource_id' => $resource_id, ':reservation_date' => $reservation_date, ':start_time' => $start_time, ':end_time' => $end_time));
Run Code Online (Sandbox Code Playgroud)
查询无效,因为我认为它没有正确识别BETWEEN函数并返回end_time,因为它存在.有没有办法显示drupal或db api这是BETWEEN语句?谢谢.
如何从drupal搜索中排除一种内容类型.我也使用node_quick_find模块进行自动完成搜索.有没有办法做同样的事情.
请帮我
我在网上搜索一个教程来创建一个在页面上显示的表单,当我们使用模块和块显示内容时,我们是否应该在模块中显示一个表单?由于我是drupal的新手,我对drupal形式一无所知.我下载并安装了示例表单模块.但我不知道这个表格会在哪里显示出来.我从这里下载了它 http://drupal.org/node/1121110
如何将嵌套的选择查询转换为Drual 7 db_select?以下是问题查询:
select
*
from
tbl_word
where
EngWord like '%apple%' or
WordID in (
select
WordID
from
tbl_subword
where
EngWord like '%apple%'
);
Run Code Online (Sandbox Code Playgroud) drupal-modules ×10
drupal ×8
drupal-7 ×5
php ×5
drupal-6 ×3
mysql ×2
drupal-fapi ×1
drupal-hooks ×1
sql ×1