首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在内容类型的nodereference字段中,是否可以显示与自动完成结果一起添加的内容类型名称?

在内容类型的nodereference字段中,是否可以显示与自动完成结果一起添加的内容类型名称?
EN

Stack Overflow用户
提问于 2014-11-06 05:55:19
回答 2查看 197关注 0票数 0

在内容类型的nodereference字段中,是否可以显示与自动完成结果一起添加的内容类型名称?

例子:

我有一个名为文章的内容类型,它有一个节点引用字段(相关内容-> field_related_documents),因此本文将引用其他节点。

在创建文章时,通过在“field_related_documents”中输入“帮助”,我将获得自动完成的结果(引用节点的标题),如下所示

代码语言:javascript
复制
helpsystems - rules 
Decision management Help
Using help menu
Help support glossary

相反,我喜欢如下所示的结果

代码语言:javascript
复制
Page | helpsystems - rules
HelpSystems | Decision management Help
Page | Using help menu
Document | Help support glossary

自动完成结果应该显示添加了相关内容类型的其他节点的标题。

我该如何做到这一点?是否有任何可供使用的模块来实现这一目标?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-06 11:45:22

我用下面的钩子创建了一个新的自定义模块nodereference_patch

代码语言:javascript
复制
/*
 * 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

然后我改变了这句话:

代码语言:javascript
复制
$matches[$row['title'] ." [nid:$id]"] = '<div class="reference-autocomplete">'. $row['rendered'] . '</div>';

代码语言:javascript
复制
$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

然后,我将下面的行更改为

代码语言:javascript
复制
$references = _nodereference_potential_references_standard($field, $string, $match, $ids, $limit);

代码语言:javascript
复制
$references = _nodereference_patch_potential_references_standard($field, $string, $match, $ids, $limit);

我将_nodereference_potential_references_standard从_nodereference_potential_references_standard复制到自定义模块,并将其重命名为nodereference.module。

然后,我将'type‘元素添加到$references[]中。更改了以下数组:

代码语言:javascript
复制
$references[$node->nid] = array(
    'title' => $node->node_title,
    'rendered' => check_plain($node->node_title),
);

代码语言:javascript
复制
$references[$node->nid] = array(
    'title' => $node->node_title,
    'type' => $node->node_type,
    'rendered' => check_plain($node->node_title),
);
票数 0
EN

Stack Overflow用户

发布于 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文件中添加的信息被更新模块使用,增加了这个新模块被原始模块替换的风险。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26772628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档