要获取内容类型的cck字段列表,我希望使用:
drupal_get_schema('content_type_mycontenttype');
Run Code Online (Sandbox Code Playgroud)
但是这会遗漏具有多个值的字段.是否有一个简单的调用来获取这样的列表?
使用Apachesolr进行搜索,我想在hook_apachesolr_prepare_query(&$ query)中添加几个过滤器.这很好,除了我希望过滤器扩大搜索范围('OR'),而不是缩小它('AND').
例如,如果我有4个类型的节点:A和3类型:B匹配搜索,则按类型过滤:A和类型:B应返回7个节点(类型:A AND节点类型:B),而不是0那些类型:A也是类型:B.
我看到了使用nodeaccess模型执行此操作的建议
foreach ($filters as $filter) {
$subquery = apachesolr_drupal_query();
if (!empty($subquery)) {
$subquery->add_filter('type', $filter);
$query->add_subquery($subquery);
}
}
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.(它不会返回任何结果).
然后我尝试(因为我有有限数量的节点类型),不包括我不想要的类型:
$excludes = array('A', 'B', 'C');
$excludes = array_diff($excludes, $filters);
$exclude = implode('&', $excludes);
$query->add_filter('type', $exclude, TRUE);
Run Code Online (Sandbox Code Playgroud)
这种将它们拼接在一起的方法不起作用('&'被转义)但是也没有将它们作为子查询添加,类似于上面的方式.
有关如何做到这一点的任何建议?
我想在评论表单上覆盖一些核心drupal行为.
如果您以匿名用户身份发表评论,您的姓名和邮件将存储在cookie中,然后javascript将使用以下代码填写后续评论表单中的相应字段:
Drupal.behaviors.comment = function (context) {
var parts = new Array("name", "homepage", "mail");
var cookie = '';
for (i=0;i<3;i++) {
cookie = Drupal.comment.getCookie('comment_info_' + parts[i]);
if (cookie != '') {
$("#comment-form input[name=" + parts[i] + "]:not(.comment-processed)", context)
.val(cookie)
.addClass('comment-processed');
}
}
};
Run Code Online (Sandbox Code Playgroud)
如果我不想填写这些字段,我知道我可以用更多的javascript消除这些信息,但我确信有一个"更清洁"的方法来实现它.