Drupal 7删除多个图像字段表单

时间:2013-08-09 12:47:51

标签: drupal drupal-7 widget imagefield

我正在构建一个drupal 7(7.20)网站,其中包含“项目”内容类型,其中包含多个图像字段(我不想使用图库)。

我希望能够从节点编辑页面对这些字段执行批量删除操作。根据我收集的内容,我必须覆盖theme_file_widget_multiple并返回tableselect而不是表格,然后使用按钮和javascript从数据库中删除图像。

我错过了一些明显的东西吗?对于一些如此微不足道的事情来说,这看起来很像。

编辑:

我在这方面取得了一些进展:

function mytheme_file_widget_multiple($variables) {

$element = $variables ['element'];
$headers = array ();
$headers ['info'] = t ( '' );

$widgets = array ();
foreach ( element_children ( $element ) as $key ) {
    $widgets [] = &$element [$key];
}
usort ( $widgets, '_field_sort_items_value_helper' );

$rows [] = array ();
$i = 0;
foreach ( $widgets as $key => &$widget ) {
    // Save the uploading row for last.
    if ($widget ['#file'] == FALSE) {
        $widget ['#description'] = $element ['#file_upload_description'];
        continue;
    }
    $operations_elements = array ();
    foreach ( element_children ( $widget ) as $sub_key ) {
        if (isset ( $widget [$sub_key] ['#type'] ) && $widget [$sub_key] ['#type'] == 'submit') {
            $operations_elements [] = &$widget [$sub_key];
        }
    }
    $information = drupal_render ( $widget );
    $rows [$i ++] ['info'] = $information;
}

$output = '';
$output = drupal_render_children ( $element );
$form ['element'] = array (
    '#type' => 'tableselect',
    '#header' => $headers,
    '#options' => $rows,
    '#js_select' => TRUE,
    '#empty' => t ( 'No data' ),
    '#attributes' => array () );
$output .= empty ( $rows ) ? "" : drupal_render ( $form );
return $output;
}

这包含在我的主题模板文件中,但tableselect没有复选框。这让我发疯了。有人可以告诉我我做错了吗?

1 个答案:

答案 0 :(得分:0)

  

根据我收集的内容,我必须创建一个覆盖字段集预处理函数的模块。

以下是参考资料:

1)https://drupal.org/node/1905244

这篇文章似乎试图做你想做的事。

2)同时查看https://drupal.org/project/views_bulk_operations 这可能很有用。

3)如果没有,那么你需要制作自己的小部件:

https://api.drupal.org/api/drupal/modules%21field%21field.module/group/field/7

https://drupal.org/project/examples(包含您需要的所有示例)

一切顺利。