如何编辑地创建一个节点,添加菜单项,然后添加路径别名? -- nodes 领域 和 6 领域 drupal 相关 的问题

How do I programatically create a node, add a menu item, and add a path alias?


1
vote

问题

中文

我正在使用drupal 6.我有一个外部数据库,我需要以某种方式变成节点,以便我们的drupal站点可以显示内容并使用solr搜索内容。我目前有一个模块,每次查看这些页面时都会显示页面并直接查询数据库。这不是最佳解决方案,因为当用户使用我们的搜索时找不到这些页面。

我知道我可以通过数据库项目迭代,创建$节点对象并使用node_save()来创建节点。

1)我可以设置特定的nid,例如$ node-> nid = 9999999。 $ some_database_key,以便我知道这些节点可以稍后引用更新?

我无法搞定工作,但我确实弄清楚了这个解决方案: 我为我的模块创建了一个数据库表,类似于node_example模块中的模块。使用此和自定义内容类型,我可以创建节点。在我使用

之前,我无法正确地工作
  $node = node_submit($node);   

在呼叫之前

  node_save($node);   

2)如何为这些新节点创建菜单项?

解决方案

  $link = array(); $link['menu_name'] = 'custom_menu'; // Fill out your menu name or just use navigation $link['link_title'] = 'Title Here'; // What appears in the menu link $link['link_path'] = 'node/' . $node->nid; // Or you can use a path alias as well $link['plid'] = 12; // Optional - if you want it to nest under an item you'll need its mlid (menu id) menu_link_save($link);   
请参阅: http://api.drupal .org / api / drupal /包括--menu.inc / function / menu_link_save / 6

3)如何为这些节点创建别名,例如Node / 856进入程序/某种程序类型/某些程序标题

解决方案 类似于上面的菜单解决方案,可以使用

  path_set_alias('node/' . $node->nid, 'path/alias/here');   

谢谢任何建议!

英文原文

I am using Drupal 6. I have an external database that I need to somehow turn into nodes so that our Drupal site can display the content and search the content with Solr. I currently have a module which displays pages and queries the database directly each time these pages are viewed. This is not an optimal solution because these pages are not found when a user uses our search.

I know that I can iterate through the database items, create a $node object and use node_save() to create nodes.

1) Can I set a specific NID such as $node->nid = 9999999 . $some_database_key so that I know these nodes can be referenced later for updating?

I could not get this to work, but I did figure out this solution: I created a database table for my module similar to the one in the node_example module. Using this and a custom content type, I could create nodes. I could not get it to work properly until I used

$node = node_submit($node); 

prior to calling

node_save($node); 

2) How do I create menu items for these new nodes?

Solution

$link = array(); $link['menu_name'] = 'custom_menu'; // Fill out your menu name or just use navigation $link['link_title'] = 'Title Here'; // What appears in the menu link $link['link_path'] = 'node/' . $node->nid; // Or you can use a path alias as well $link['plid'] = 12; // Optional - if you want it to nest under an item you'll need its mlid (menu id) menu_link_save($link); 

See: http://api.drupal.org/api/drupal/includes--menu.inc/function/menu_link_save/6

3) How do I create aliases for these nodes such as node/856 goes to programs/some-program-type/some-program-title

SOLUTION Similar to the menu solution above, you can use

path_set_alias('node/' . $node->nid, 'path/alias/here'); 

Thanks for any suggestions!

     
   
   

回答列表

1
 
vote

我明白您有一些外部数据库,您的节点与来自那里的某些实体相关。您需要节点"下载" 某些内容从其他数据库;与solr的兼容性。

1)反而"黑客" 节点号,我认为您应该使用Create Node类型进行它。除了区分其他人的下载节点之外;您可以创建用于存储外部数据库ID的CCK字段;并设置内容版本的权限,没有人可以编辑它。

2)在您的自定义模块中,您需要实现Hook_Blocks以放入所需的菜单内容。

3)使用 pathauto 模块您可以简单地创建自动路径。如果您从中创建特殊内容类型,则框utauto功能应该足够。

 

I understand that you have some external database, and your nodes are in relation with some entities from there. You need node 'downloading' some content from other database; for compatibility with Solr.

1) Instead 'hacking' node number, I think you should use create node type for it. Beside distinguishing downloaded nodes for others; you can create CCK field for storing external database id; and setting content edition permission that nobody can edit it.

2) In your custom module you need to implement hook_blocks to put in the menu content that you need.

3) With pathauto module you can simply create automatic path. If you create special content type out of the box pathauto functionality should be enough.

 
 

相关问题

8  将您自己的内容添加到节点  ( Add your own content to node ) 
我创建了一个模块,将自定义内容添加到节点;我想在节点视图中显示此自定义内容。我认为 hook_node_view() 是右挂钩要使用,但我的内容没有显示。 到目前为止我的内容是以下代码: function mymodule_node_view($node, $view_mode = 'full', $langco...

1  如何跟踪IP地址  ( How to track ip addresses ) 
我想使用统计模块跟踪我网站中访问者的IP地址。 在此附加的日志(3天日志)。如果机器人或人类使用IP地址,我无法弄清楚。例如,当我选中第2和第3个IP地址时,他们原来是谷歌和微软(Bing)。但我不知道第一个IP地址,在3天内有900次访问。 我想跟踪adsense的恶意用户IP地址无效点击。 ...

4  使用不同的视图模式与节点  ( Using a different view mode with a node ) 
我了解使用视图您可以使用不同的视图模式,例如,预告片或全内容。 是否可以使用除完整内容视图模式以外的视图模式查看节点? 我想要实现的是,取决于用户的角色,能够显示不同的字段。 ...

6  检查页面是否是使用D7中的参数的节点  ( Check if the page is a node using arguments in d7 ) 
在drupal 6中,检查当前页面是一个节点,我们使用以下代码段: if (arg(0)=='node' && is_numeric(arg(1))) { /* Do stuff. */ } 因为这是一个常用的语句,我想知道在drupal 7中是否有更短的方式来执行此操作,例如类似于以下内容的东西: i...

1  如何使用pathauto为节点的菜单本地任务创建URL别名?  ( How do i use pathauto to create a url alias for nodes menu local tasks ) 
节点使用PATHAUTO模块自动别名。例如, node/448 显示为 aliased/path 。 是可以别名 node/448/edit 到 aliased/path/edit ? ...

1  您创建块的最佳模块,并从下拉下来选择节点以渲染?  ( Best module where you create a block and select a node from drop down to render ) 
自从我和Drupal 6玩过,现在已经很短暂,现在我在Drupal 7.7中潮湿了。 我需要能够创建一个简单的块,并在该块"配置" 区域中,我希望能够从下拉列表中选择系统中的节点。当该块呈现在XXXX页面上时,它将与设置的任何其他变量一起呈现该节点的预告片。 我认为我可以通过只创建一个块视图,用视图3.x来完成此目的...

4  修改Drupal 7的Hook_node_view()中的节点  ( Modify node in hook node view for drupal 7 ) 
我正在尝试修改内容数组,并添加额外的链接。 我不想使用链接模块;此链接将与其他字段生成,它是类似于计算的字段模块(这是在Drupal 7的开发阶段,而且我宁愿不使用它)。 我不想只是将html / php添加到node.tpl.php。我希望这是一个很好的解决方案。 我一直在尝试将新字段添加到 $node->co...

1  在论坛中显示面包屑  ( Show breadcrumbs in forum ) 
我正在使用高级论坛模块,我想知道我如何显示面包屑?我只想要面包屑只在论坛页面上出现 ...

3  促使Drupal列表顶部的选项  ( Option to promote to top of list in drupal ) 
我有一个在列表中显示顶部音乐的网站,我创建了一个名为"topmusic" 的内容类型,以及将显示所有topmusic内容类型的视图。 此视图显示连续TopMusic内容,创建的第一个内容将获得列表顶部,在此之后添加任何添加的内容。 我想添加一个新的按钮或触发到内容类型,即当它"开" 时,此内容会位于列表的顶部。 任何...

25  以编程方式附加文件  ( Programmatically attaching files ) 
我已经创建了"图库" 内容类型,并添加了两个字段:"照片," 和"文档" 。然后,我使用以下代码在"文档" 字段中上传文件: $file = file_save_upload('document', array( 'file_validate_extensions' => array('txt doc')...

1  涉及在Drupal 7中使用快速标签的自定义节点模板?  ( Custom node template involving the use of quick tabs in drupal 7 ) 
我有我想要显示的产品分为快速标签。我最初在考虑使用多个观点来执行此操作,但是我意识到必须使用节点 - product.tpl.php进行方法。它们被分开的方式如下: 一个快速标签,具有基本图像,标题和关于产品的一小段。 第二个选项卡应具有该产品的功能。 第三个应该是产品的描述。第四个应该是文件(图像和视频,音...

1  如何在节点中构建字段列表?  ( How to build a field list in a node ) 
我有两个内容类型:'艺术家'和'场地'。 在查看艺术家节点时,它需要显示场地和日期的列表。场地名称将链接到场地节点,例如: Artist -------------------- Venue1 | 1-Jan 20:00 Venue2 | 2-Jan 17:00 Venue3 | 4-Jan 20:00 ...

4  链接到其他节点  ( Linking to other nodes ) 
我希望将字段添加到列出节点的内容类型。基本上,我需要用户能够选择要链接到的节点,然后(在模板中)将链接输出到该节点。 这似乎是一个基本的事情;我正在使用drupal 7,但不能为我的生活来解决我错过的东西。 ...

0  如何将编辑器嵌入Drupal 7中的Stackexchange Q&A中的编辑器?  ( How can i embed an editor just like those in stackexchange qa in drupal 7 ) 
我是新的drupal。 我想在我的内容中嵌入一个编辑器,身体节点,以便在添加新内容时我可以执行不同的编辑。 (即,粗体,超链接,列表)等。 是可以这样做吗?任何模块都可用吗? ...

1  使用CCK字段创建NodeType  ( Create nodetype with cck fields ) 
任何线索或示例如何编程方式使用Drupal 6中的CCK字段创建节点类型?我想创建一个带有CCK文件字段的内容类型。示例模块具有创建节点类型的示例,但它不使用现有的CCK字段。 ...

1  按特定内容类型显示节点计数器?  ( Display a node counter by specific content type ) 
如何显示计数器。新闻总数:999,博客总帖子:123等? (实际上寻找D6解决方案) ...

1  如何将显示在首页中的节点移动到另一页面? (例如domain.com/articles)  ( How to move the nodes displaying in the front page to another page e g domain ) 
我几乎到处搜索了,没有找到任何东西,所以希望有人可以帮助我! 好的,我正在使用drupal 7,我安装了它并将前页更改为基本页面,因为我想要显示静态页面而不是文章列表!所以这个位很好,完美地工作,但问题是如何在另一页面上显示我的文章列表,例如我经常发布文章,我想在网站的文章部分上显示,而不是在前面显示页面,所以我该怎...

7  如何基于Profile2模块的字段预先填充节点创建表单的字段?  ( How to pre populate fields on a node creation form based on fields from profile2 ) 
有一个内容类型("作业列表" ),商业帐户可以用于列出作业开口,以及包含业务地址,组织名称和分类术语等行业类型的业务的配置文件2配置文件。 95%的业务将列出职位发布将使用相同的信息;我可以使用配置文件信息,但我需要考虑可能想要更改作业列表表单的5%。例如,作业可能在另一个州或国家,需要考虑。我认为处理这种情况的最...

1  如何在每个用户配置文件中制作博客选项卡  ( How to make a blog tab in every user profile ) 
我已启用博客模块,以便为每个用户提供博客。现在我想在每个用户配置文件中创建一个标签,它链接到该用户的博客。 是可能的吗?我该怎么办? ...

2  预先填充CCK Flexifield / MultiCroup?  ( Pre populating a cck flexifield multigroup ) 
我正在使用重复的timentset模块(Flexifield,稍微类似于CCK3 Multigroup)来创建测量表内容类型。在此,允许用户创建无限数量的房间,每个房间由五个字段定义:名称, Level ,宽度,长度,区域。 预先填充这些行中的十个(例如"厨房," 浴室,"客厅" )真是个有用的。 如何进行编程方式创...




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


Licensed under cc by-sa 3.0 with attribution required.