javascript - 使用 Drupal 在灯箱中打印 'node/add' 表单

标签 javascript drupal drupal-hooks hook-menu

我在灯箱中打印“节点/添加”表单时遇到一些问题。

我的custom.module中有一个hook_menu,如下所示:

  $items['get-form/%'] = array(
    'title' => t('Get a form'),
      'description' => t('Get form'),
      'page callback' => '_get_form',
      'page arguments' => array(1),
      'access arguments' => array('access content'),
      'type' => MENU_CALLBACK,
    );

...其中 % 是 id,例如“story_node_form”。

然后,我有这样的回调函数:

function _get_form($form_id){
  module_load_include('inc', 'node', 'node.pages');

  if (strpos($form_string, "_node_form")){
    //Test if the form is a <type>_node_form. Is the node/add/<type>
    $content_type = explode("_node_form", $form_id)[0];
    print drupal_render(node_add($content_type));
  }

表格显示在右侧的灯箱中。问题是表单(所见即所得、节点引用、术语引用...)的 javascript 不起作用。

我尝试执行 Drupal.attachBehaviors()Drupal.attachBehaviors(document)Drupal.attachBehaviors("#story-node-form") 但似乎没有任何作用。

有人可以帮忙吗?

最佳答案

这段代码应该可以解决问题:

function _get_form($form_id){
    global $user;
    $node = (object) array(
        'uid' => $user->uid, 
        'name' => (isset($user->name) ? $user->name : ''), 
        'type' => 'ENTER NODE TYPE HERE', 
        'language' => LANGUAGE_NONE
    );
    $form_state['build_info']['args'] = array($node);
    form_load_include($form_state, 'inc', 'node', 'node.pages');
    echo drupal_render(drupal_build_form($form_id, $form_state));
}

您需要获取节点类型以及 form_id 才能正常工作,但这应该不会太困难。

关于javascript - 使用 Drupal 在灯箱中打印 'node/add' 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13767142/

相关文章:

drupal - 如何使用提要将 youtube 中上传的视频上传到我的网站 - Google api 版本 3 V3)

drupal - 如何将参数传递给 Drupal 中的表单提交处理程序

javascript - 如何使 'SpriteSpin' 加载特定图像作为加载的第一个图像?

javascript - 删除 iframe 内的目标

javascript - 如何使用 jquery 动态添加/删除文件类型输入字段?

javascript - 网格 flex 端没有按我预期的方式运行

javascript - 如何从 Drupal 7 中的特定内容类型中删除 CSS 和 JS

drupal - 最广泛使用的 Drupal 富文本编辑器插件?

php - Drupal:是否调用过 *.api.php 中的 hook_ 函数?

php - Drupal的模块钩子(Hook)调用从哪里开始?