複数の画像フィールドを含む「プロジェクト」コンテンツ タイプで drupal 7 (7.20) Web サイトを構築しています (ギャラリーを使用したくありません)。
ノード編集ページからこれらのフィールドに対して一括削除操作を実行できるようにしたいと考えています。私が収集したものから、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 にはチェックボックスがありません。これは私を夢中にさせています..誰かが私が間違っていることを教えてもらえますか?