【问题标题】:Embed drupal 7 node form嵌入drupal 7节点表单
【发布时间】:2012-07-23 14:22:16
【问题描述】:

我想知道是否可以在页面中插入节点。我使用 Drupal 7,但我找不到如何做到这一点。

有人有想法吗?我试着这样做:

    function test(){

       if (!function_exists('node_add')) {
        module_load_include('inc', 'node', 'node.pages');
       }

       print drupal_render(node_add('node_example'));

    }

我的表单显示效果不佳。它是“在”我的主题

【问题讨论】:

  • 您要添加节点的“页面”是什么?是已经在显示自己的内容的页面还是正在显示视图的页面?
  • 这是我模块的一个页面。事实上,它是我菜单中的一个选项卡。我想将我的节点表单集成到这个选项卡中。希望你能理解

标签: forms drupal drupal-7 embed


【解决方案1】:

希望我能正确理解您的问题。我的评论的答案确实有帮助!如果它是您尝试添加到菜单的节点表单,这通常通过 Drupal 中的 hook_menu() 函数来完成。这里有一些示例代码可以帮助您入门

function YOURMODULE_menu() {

 // Here, substitute in the URL of your page.  It can be mymodule/add_content or whatever else you'd like
 $items['YOUR_PAGE_URL'] = array(
    'type' => MENU_CALLBACK,
    'title' => t('YOUR PAGE TITLE'),
    'page callback' => 'drupal_get_form',
    'page arguments' => array('your_node_function'),      // Here, you should put in the function that creates your node form
    'access arguments' => array('Administer content'),  // This is optional, you can require a user to have certain permissions set to access your page/form
 );

 return($items);

}

记得在测试之前清除缓存!

创建表单的函数中的示例代码:

function your_node_function($form, &$form_state)
{
  $form['field_1'] = array(
   '#type' => 'textfield',
   '#title' => t('Field label'),
   '#description' => t('Help user understand what to input here'),
   '#required' => TRUE,
  );

  return $form;
}

看看你能不能看到这个小小的单字段表单来帮助你开始。这并没有解释如何实际保存用户数据等,因为这超出了此处单个答案可以提供的范围,但这应该可以帮助您开始使用与菜单系统相连的表单......

希望对你有帮助!!!!

=================== 编辑===================

这里是您可以在 Drupal 中添加到表单的不同类型表单元素的在线文档:http://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7

【讨论】:

  • 谢谢它更好!但我有一些问题......:“未定义的索引:comment_form_node_form_alter()中的#node”和“试图在comment_form_node_form_alter()中获取非对象的属性”和“警告:call_user_func_array()期望参数1是一个有效的回调, 在 drupal_retrieve_form() 中找不到函数“node_form”或函数名称无效"
  • 这些错误源于您的功能,而不是我上面的代码将其连接到菜单。
  • 另外,您似乎正在更改已经存在的表单,而不是从头到尾创建自己的表单。那是对的吗?让我感到困惑的原因是,通常,当您更改现有表单时,您不需要以这种方式将其连接到菜单,因为该表单已经有自己的路径。我的建议是您自己生成的表格(而不是修改已经存在的表格)...我不知道这是否有意义...
  • 好的,但我可以只使用 article_node_form 吗?我现在没有功能,对于我的节点形式,它只是测试。编辑:哦好的!我明白 !那么是否存在手动创建表单的其他可能性?
  • 是的,肯定有另一种创建表单的方法(除了更改表单)。我会在一分钟内编辑我的答案以包含一个小例子......
猜你喜欢
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
  • 1970-01-01
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多