在内容类型的nodereference字段中,是否可以显示与自动完成结果一起添加的内容类型名称?
例子:
我有一个名为文章的内容类型,它有一个节点引用字段(相关内容-> field_related_documents),因此本文将引用其他节点。
在创建文章时,通过在“field_related_documents”中输入“帮助”,我将获得自动完成的结果(引用节点的标题),如下所示
helpsystems - rules
Decision management Help
Using help menu
Help support glossary相反,我喜欢如下所示的结果
Page | helpsystems - rules
HelpSystems | Decision management Help
Page | Using help menu
Document | Help support glossary自动完成结果应该显示添加了相关内容类型的其他节点的标题。
我该如何做到这一点?是否有任何可供使用的模块来实现这一目标?
发布于 2014-11-06 11:45:22
我用下面的钩子创建了一个新的自定义模块nodereference_patch
/*
* Altering nodereference/autocomplete menu using menu alter
*/
function nodereference_patch_menu_alter(&$items) {
$items['nodereference/autocomplete']['page callback'] = 'nodereference_patch_new_nodereference_autocomplete';
}然后,我将nodereference_autocomplete函数复制到您的自定义模块中,将其名称更改为nodereference_autocomplete
然后我改变了这句话:
$matches[$row['title'] ." [nid:$id]"] = '<div class="reference-autocomplete">'. $row['rendered'] . '</div>';至
$matches[$row['type'] . " | " . $row['title'] . " [nid:$id]"] = '<div class="reference-autocomplete">' . $row['type'] . " | " . $row['rendered'] . '</div>';我将_nodereference_potential_references函数从nodereference.module复制到自定义模块,并将其重命名为_nodereference_patch_potential_references
然后,我将下面的行更改为
$references = _nodereference_potential_references_standard($field, $string, $match, $ids, $limit);至
$references = _nodereference_patch_potential_references_standard($field, $string, $match, $ids, $limit);我将_nodereference_potential_references_standard从_nodereference_potential_references_standard复制到自定义模块,并将其重命名为nodereference.module。
然后,我将'type‘元素添加到$references[]中。更改了以下数组:
$references[$node->nid] = array(
'title' => $node->node_title,
'rendered' => check_plain($node->node_title),
);至
$references[$node->nid] = array(
'title' => $node->node_title,
'type' => $node->node_type,
'rendered' => check_plain($node->node_title),
);发布于 2014-11-06 15:19:37
我更倾向于使用不同的方法,使用类似的方法,但不是复制完整的模块并重命名它,而是创建一个新的menu_hook和form_alters来更新自动完成路径。
如果您使用的是实体引用而不是节点引用,则可以使用视图来显示内容,而不是我喜欢的路径,但会减少自定义代码的数量。这个演示的快速google给出了以下视频(http://codekarate.com/daily-dose-of-drupal/using-views-entity-reference-module-drupal-7)
另外,请注意,如果您打算像上面的答案那样复制模块,我强烈建议您删除模块信息文件中的一些行。下面的信息由drupal.org打包脚本在info文件中添加的信息被更新模块使用,增加了这个新模块被原始模块替换的风险。
https://stackoverflow.com/questions/26772628
复制相似问题