如何在Drupal 7中以编程方式创建节点? -- 7 领域 和 nodes 领域 drupal 相关 的问题

How to create a node programmatically in Drupal 7?


4
vote

问题

中文

我知道您可以通过创建节点对象,然后触发node_save()以编程方式创建节点,但我实际上没有想要在数据库中存储节点。

是否有一种方法可以在查找内容屏幕中显示的代码中创建特定内容类型的节点,并使用视图等工作,但没有物理存储在数据库中。

我问的原因是,我有一个查看特定内容类型的一系列节点,但我想在该列表中创建自定义节点,该节点使用PHP动态地设置内容,但如果我消除Node_save( )它节点每次执行模块时都会存储在数据库中。

我还使用节点引用来链接到这些节点,因此我的程序性节点也需要使用节点引用。

英文原文

I know you can create nodes programmatically by creating a node object and then firing node_save() but I don't actually want to store the node in the database.

Is there a way to create nodes of a specific content type in code that show up in the Find Content screens and work with views etc, but are not physically stored in the database.

The reason I ask is that I have a view that lists a series of nodes of a specific content type, but I want to create a custom node in that list that uses PHP to set the content dynamically but if I fire node_save() will it node get stored in the database every time the module is executed.

I'm also using node reference to link to these nodes so my programatic node will need to work with node reference too.

     

回答列表

4
 
vote
vote
最佳答案
 

您正在尝试在那里做很多。

您可以在数据库中没有节点而无法完成您想要的大部分。我认为节点参考是一个粘附点。

视图可以与许多后端一起使用,可以将其指向不同的数据库或使用solr索引数据,并使用solr视图搜索和访问您的内容,使用完全外部内容存在问题但是你可以绕过那个。 SPARQL视图可以允许您从三重商店获取数据。

您可以使用字段填充节点对象,并使用主题节点在不使用节点保存的情况下显示它。

常见模式是创建存根节点,该节点仅包含对外部资源的引用,并在查看节点时使用Nodeapi钩子加载数据。这通常不那么工作,并允许您使用标准搜索和节点参考功能。

不知道为什么你不想保存节点,很难做出具体的建议。

 

You're trying to do a lot there.

You can do most of what you want without having a node in the database. I think node reference is a sticking point.

Views can be used with a number of back ends, you can get it to point to a different database or index your data with solr and use solr views to search and access your content, there is an issue with using completely external content but you can get round that. Sparql views can allow you to get data from a triple store.

You can populate a node object with fields and use theme node to display it without using node save.

A common pattern is to create stub nodes, which contain only a reference to an external resource and use nodeapi hooks to load the data when the node is viewed. This is often less work and would allow you to use the standard search and node reference functionality.

Without knowing quite why you don't want to save the nodes, it is difficult to make a concrete suggestion.

 
 
     
     
3
 
vote

这个 link 可能有帮助:< / p>

http://timonweb.com/how-以编程 - 创建节点 - 评论 - 和 - taxonomies-drupal-7

 

This link might help:

http://timonweb.com/how-programmatically-create-nodes-comments-and-taxonomies-drupal-7

 
 
2
 
vote

节点参考通过保存要引用的节点的ID来完成工作。对于具有nid的节点,需要将其保存到数据库中。

视图通过查询数据库来使用。虽然可以让视图使用不同的东西来获取除SQL / DATABAS之外的数据,这是我唯一得到很好的支持。我不相信您可以使用多个引擎来获取数据,这意味着为了获取动态创建的节点的视图,您将需要将其保存在数据库中。

您是否考虑过保存您创建的节点列表并在需要时更新它们,而不是每次创建新节点?

 

Node reference works by saving the id of the node that you want to reference. For a node to have a nid, it needs to be saved to the database.

Views works by querying your database. While it is possible to let views use different things to fetch data other than SQL/database it's the only thing I know off that is well supported. I don't believe you can use more than one engine to fetch data, which means that in order for views to get your dynamically created node, you will need save it in the database.

Have you thought about saving a list of the nodes you create instead and update them if needed, instead of create new nodes every time?

 
 
 
 

相关问题

1  什么是访问记录“content_access:全部”?这是覆盖我的分类管理模块  ( What is the access record content access all this is overriding my taxonomy ) 
自从我上次重建我的权限以来,我的权限遇到了问题。 (在研究用户参考权限后,我完成了这一点。此字段没有用户参考) 分类权限具有相同的优先级。实际上所有访问模块都具有零的优先级。当我转到可以看到的页面时,即使不应该看到它,它会显示以下内容授予访问页面的访问: 我认为我必须让人们默认情况下访问页面,然后如果分配分类,...

3  如何设置Drupal性能监控以绕过清漆?  ( How to setup drupal performance monitoring to bypass varnish ) 
本月我的Drupal Hosting Company有很多正常运行时间问题。 大多数时候我的pingdom监视器甚至没有提醒问题,因为清漆仍然能够为缓存的主页提供服务。 如何绕过清漆以检查Drupal实例的真实健康吗?它们有一个用户名/密码选项,但我确定的是http用户名/密码,而不是基于表单的登录名。 如果我指定假...

0  实体字段查询寻呼机仅加载第一页  ( Entity field query pager only loads first page ) 
如何使用实体字段查询寻呼机? $query = new EntityFieldQuery(); $result = $query->entityCondition('entity_type', 'node') ->entityCondition('bundle', 'event') ->pager(4)...

0  替换内容类型模板中的字段标签[重复]  ( Replace field label in content type template ) 
这个问题已经在这里有答案: 隐藏一个字段标签 (5个答案) 关闭 6年前。...

2  没有<form>标签的形式  ( Form without form tag ) 
我在管理部分中有一个审核形式,其中一个主持人可以编辑文本,用户写入。 这是我的形式: function phase2_moderation_form($admin, $moderation, $phase2, $edit, $sdid) { $sql = 'SELECT * FROM {phase2_s...

4  在我的帐户菜单中“添加链接”  ( Add link in my account menu ) 
用户帐户页面(http://example.com/user)包含一些默认选项卡,如"查看" ,"编辑" 等。 我想在那里添加我的菜单链接。要返回的内容应依赖于用户ID。我该怎么做呢? ...

1  私人邮件的实体ID是什么?  ( What is the entity id for private messages ) 
我想使用 entity_load() 访问一些私人邮件,但我不知道实体ID是什么调用它们。我有消息ID(中旬),但似乎没有工作。 我试图加载这样的单独消息: $message_entity = entity_load('privatemsg_message', array($row['mid']));...

4  维护页面 - >显示特定块  ( Maintenance page show a specific block ) 
如何在维护页面(例如jQuery倒计时)上提供块?它是关于设置正确的权限吗? ...

4  $ form_state ['重建']  ( Example for form state rebuild ) 
愿任何人给我一个使用 $form_state['rebuild'] 在用户输入之后重建表单的示例? ...

0  自动填充内容类型到另一个  ( Auto fill from on content type to another ) 
我有一个名为联系人的内容类型,一个人的基本信息。 (〜600节点) 我有另一个内容类型,如表单,具有所有与联系点的选择列表。当用户选择所需的 contact 时,按从选择列表中的名称,我需要其余的信息 contact 来自动 - 填写表格上的文本框。 任何想法? 注意:使用drupal 7 ...

1  在重写视图期间删除了HTML标记  ( Html tags removed during views rewriting ) 
hello我创建了一个带有模块"视图和数据导出" 的站点地图。我的页面的站点地图工作正常,但我会将图像添加到我的页面。 站点地图应该看第一捕获,我用数字进行测试,它们很好地放置。当我"重写结果" 时,标签被忽略。 如何实现这些标签?自从我上面已经几个星期了。 谢谢 如果我用文本数据替换HTML标签,它可以工作: ...

2  svg内的链接具有未定义的事件  ( Links inside svg have undefined events ) 
我有一个问题,我正在开发一个我的开发,其中我有一个使用每个状态的美国映射,作为SVG中定义的多边形。这些多边形中的每一个都在链接中包装,因此用户可以单击一个状态以将其带到有关该状态的信息。 代码布局: <svg...> <a xlink:href="..."> <polygon ...><title>{...

2  Web服务器身份验证  ( Webserver authentication ) 
我正在寻找一个模块,用于为MS Windows网络实现单一登录。我找到了Web服务器身份验证( https://www.drupal.org/project/webserver_auth )。但是我在配置之前激活了模块,现在我无法访问admin,或者作为任何其他开发人员用户,以继续工作我的项目配置。 曾经有过这个问题...

1  答案模块的“搜索问题”为什么不显示任何结果?  ( Why does search question of the answers module not show any results ) 
answers 模块没有显示任何结果。我正在粘贴所键入的问题,但它只是显示"没有问题匹配" 。 是什么问题? 编辑:我现在确实得到了解决方案,我正在尝试其他相关的模块最佳答案和 answers userpopts 在启用搜索功能后启动工作。可能是它们之间相互相互的其他模块启用并开始工作,但我无法讨论它,作为答案...

3  选择列表的钩形更改  ( Hook form alter for select list ) 
我试图将标题的文本字段过滤器转换为使用钩形窗体删除的选定列表: function myhook_form_alter(&$form, &$form_state, $form_id) { if($form_id == 'views_exposed_form'){ // load nodes fi...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.