[gelöst] CCK multiple values
Eingetragen von katasun (281)
am 18.10.2010 - 11:16 Uhr in
am 18.10.2010 - 11:16 Uhr in
mit CCK und Feldern für Dateien erstelle ich zwei kleine Bildergallerien. Ausgegeben wird dies durch die Darstellung einer Tabelle für multiple Values.
Was ich nicht schaffe, ist Zugriff auf den Titel der Tabelle zu bekommen. Scheint wohl auch ein schwieriges Thema zu sein. In meiner Darstellung geben ich die Bilder mit
<?php print drupal_render($form['field_user_album']); ?>
aus. Klappt auch alles. Aber ich will den Titel mit unset ausblenden. Da finde ich aber nichts, was bis jetzt funktioniert hat. Kann mir jemand helfen?
Katasun
Über diese Funktion, die in CCK -> content.modul steckt kann man die Ausgabe gestalten.
function theme_content_multiple_values($element) {
$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
),
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']);
$cells = array(
array('data' => '', 'class' => 'content-multiple-drag'),
drupal_render($item),
array('data' => $delta_element, 'class' => 'delta-order'),
);
$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']);
drupal_add_tabledrag($table_id, 'order', 'sibling', $order_class);
}
else {
foreach (element_children($element) as $key) {
$output .= drupal_render($element[$key]);
}
}
return $output;
}
- Anmelden oder Registrieren um Kommentare zu schreiben
Also ist der Titel ein Feld
am 18.10.2010 - 20:08 Uhr
Also ist der Titel ein Feld innerhalb der $form ?
Dann vielleicht damit:
http://drupal.org/project/formfilter
Oder welchen Titel meinst du?
Titel ein Feld
am 19.10.2010 - 07:39 Uhr
Danke für den Tipp mit dem Formfilter. Der Filter kann auf einige Elemente zugreifen, aber nicht auf den Titel.
Das ist wohl ein multiples CCK Field, da gibts leider nicht so viel zu finden über google, wie man die einzelnen Elemente ansprechen oder ausblenden kann. Das CCK Modul verwendet dann wohl Teile aus dem Core um diese multiplen Values darzustellen. Ich springe von einer Funktion zur anderen zwischen den CCK Modulen und den Core Modulen, aber ich bekomm es halt nicht fassen, wie ich den Titel anspreche oder ausblenden.
Es ist halt ein Array in einem Array und versteckt sich bis jetzt erfolgreich vor meinen Zugriffen. Ich werde mal auf den englischen Drupal-Seite was posten.
Katasun
P.S. Kooperative Netze Hamburg-Berlin ist eine schöne Drupal-Seite, kann man sich da eintragen?
Und wenn du dir das Array
am 19.10.2010 - 11:09 Uhr
Und wenn du dir das Array ausgeben lässt?
Dann müsstest du doch sehen können wo der Titel sich versteckt...
Wegen der Seite schreib mir mal extra was du meinst :-)