是否有一種乾淨的方法來刪除多值CCK字段上的可拖動選項?我認爲我可以用CSS來設計它,但這看起來不像是「正確」的方式。Drupal,CCK - 刪除非管理員的可拖動重新排序
理想情況下,可拖動選項不適用於除管理員以外的任何用戶。
是否有一種乾淨的方法來刪除多值CCK字段上的可拖動選項?我認爲我可以用CSS來設計它,但這看起來不像是「正確」的方式。Drupal,CCK - 刪除非管理員的可拖動重新排序
理想情況下,可拖動選項不適用於除管理員以外的任何用戶。
感謝提示@安德魯。以下是我最終想到的結果:
function stannes_content_multiple_values($element) {
global $user;
$field_name = $element['#field_name'];
$field = content_fields($field_name);
$output = '';
if ($field['multiple'] >= 1) {
$table_id = $element['#field_name'] .'_values';
$order_class = $element['#field_name'] .'-delta-order';
$required = !empty($element['#required']) ? '<span class="form-required" title="'. t('This field is required.') .'">*</span>' : '';
$header = array(
array('data' => t('!title: !required', array('!title' => $element['#title'], '!required' => $required)), 'colspan' => 2)
);
if ($user->uid == 1) {
$header[] = t('Order');
}
$rows = array();
// Sort items according to '_weight' (needed when the form comes back after
// preview or failed validation)
$items = array();
foreach (element_children($element) as $key) {
if ($key !== $element['#field_name'] .'_add_more') {
$items[] = &$element[$key];
}
}
usort($items, '_content_sort_items_value_helper');
// Add the items as table rows.
foreach ($items as $key => $item) {
$item['_weight']['#attributes']['class'] = $order_class;
$delta_element = drupal_render($item['_weight']);
if ($user->uid == 1) {
$cells = array(
array('data' => '', 'class' => 'content-multiple-drag'),
drupal_render($item),
array('data' => $delta_element, 'class' => 'delta-order'),
);
} else {
$cells = array(
drupal_render($item)
);
}
$rows[] = array(
'data' => $cells,
'class' => 'draggable',
);
}
$output .= theme('table', $header, $rows, array('id' => $table_id, 'class' => 'content-multiple-table'));
$output .= $element['#description'] ? '<div class="description">'. $element['#description'] .'</div>' : '';
$output .= drupal_render($element[$element['#field_name'] .'_add_more']);
if ($user->uid == 1) {
drupal_add_tabledrag($table_id, 'order', 'sibling', $order_class);
}
} else {
foreach (element_children($element) as $key) {
$output .= drupal_render($element[$key]);
}
}
return $output;
}
它看起來像tabledrag東西正在修建的CCK主題功能 - 如theme_content_multiple_values
它添加一個「可拖動」類表中的行,並呼籲 在桌子上drupal_add_tabledrag
。
您應該能夠在主題/模塊(?)中覆蓋此內容,並添加一個相當簡單的開關,以在添加拖動之前爲具有適當權限的用戶進行測試。