Views Bilder
am 11.05.2010 - 16:32 Uhr in
Hallo,
ich habe bei imagefield Feldern in einer View bisher so gearbeitet, daß ich in der View bei "Felder" das Bild ausgewählt habe und dann bei "Format" den "Pfad zur Datei". Im entsprechenden View-Template (views-view-fields--.tpl.php) stand der Pfad der Bilddatei dann in $field->content und damit habe ich z.B. den ImageCache gefüttert.
Jetzt habe ich ein imagefield mit mehreren Bildern. Aber leider wird in $field->content jeder Pfad mit DIV-Tags umgeben und ich möchte nicht aufwändig parsen. Im gesamten $field Objekt finde ich keine Rohdaten der Pfade. Auch den Alt-Text der Bilder finde ich nicht mehr. Den habe ich zuvor mit unserialize($field->handler->field_values[$nodeVID][0]['data']); bekommen.
Wie macht man das richtig?
VG,
Benny
- Anmelden oder Registrieren um Kommentare zu schreiben
Moin Benny... lass Dir in
am 12.05.2010 - 08:14 Uhr
Moin Benny... lass Dir in derTemplate-Datei doch mal das ganze Row Object ausgeben. Dort müsste der Pfad auch ohne Div's drin stehen (
print_r($row)
)Allerdings verstehe ich nicht, warum Du es so umständlich machst. Mit Views kannst Du doch direkt die gewünschten ImageCache-Presets auswählen, mit denen die Bilder dargestellt werden sollen.
Beste Grüße,
Niko
Kommune3 - Drupal Entwickler aus dem Ruhrgebiets
Das $row Objekt enthält
am 12.05.2010 - 16:06 Uhr
Das $row Objekt enthält lediglich stdClass Object ( [nid] => 9 [node_title] => Test [node_type] => product [node_vid] => 9)
Ich benötige den Pfad, weil ich ein eigenes jQuery-Skript nutze, das mit dem generierten Img-Tag von views nichts anfangen kann.
Update:
Ich habe jetzt mein imagecache-Preset ausgewählt und dort "Dateipfad" ausgewählt. Damit wird der Alt-Text in $row mitgeliefert.
Komischerweise wird nur das erste gespeicherte Bild (cck imagefield - multiple values) angezeigt, wie komme ich an die weiteren?
Update2:
Es liegt an der Option "Mehrfachwerte gruppieren" in der View. Schalte ich die Option aus, wird für jedes Bild eine eigene $row erzeugt und da drin stehen dann auch die Alt-Texte vom ImageCache. Mit einzelnen Rows kann ich aber in der Ansicht nichts anfangen, weil ich nur eine $row benötige, die dann alle Bilder enthält. Das kriege ich mit "Mehrfachwerte gruppieren" hin, aber dann enthält die $row bzw. $fields wieder nicht die Alt-Texte und ich kriege alle Bilder inkl. img und div Tags. Nicht mehr die reinen Pfade.
Hallo Benny, ich schlage mich
am 10.11.2010 - 20:26 Uhr
Hallo Benny,
ich schlage mich auch gerade mit den DIVs um die Bilder herum.
Hast Du da eine Lösung gefunden, die wegzubekommen?
Ich schlage mich ebenfalls
am 12.11.2010 - 09:44 Uhr
Ich schlage mich ebenfalls mit dem Problem rum und will die divs loswerden. Sie entstehen wenn ich multifields-Bilder aus cck mit views ausgebe. Falls jemand einen Hinweis hat, wäre ich ebenfalls ziemlich froh!
Ich habe mir den
am 12.11.2010 - 09:58 Uhr
Ich habe mir den entscheidenden Hinweis aus der Drupal-Doku geholt. Dort steht:
In the module code, identify the theme or preprocess function that is generating the markup you want to change and copy the function to your theme's template.php file. You will need to change the "theme_" or "template_" prefix to match the name of your theme. For example, "theme_breadcrumb" would become "mythemename_breadcrumb"; "template_preprocess_page" would become "mythemename_preprocess_page".
Ich habe mir also die Funktion
function theme_content_view_multiple_field($items, $field, $values) {
$output = '';
$i = 0;
foreach ($items as $item) {
if (!empty($item) || $item == '0') {
$output .= '<div class="field-item field-item-'. $i .'">'. $item .'</div>';
$i++;
}
}
return $output;
}
geholt und in meine template.php kopiert.
Dann habe ich
function theme_content_view_multiple_field
in
function meinthemename_content_view_multiple_field
umbenannt.
Jetzt hat man freie Bahn.
Ich bin wieder einmal ziemlich beeindruckt von den Möglichkeiten dieser genialen Software!
Schade, dass die ganze
am 12.11.2010 - 10:20 Uhr
Schade, dass die ganze Geschichte mit den tpl-files an dieser Stelle mal wieder nicht zu Ende gedacht wurde. Aber dir vielen Dank für den Hinweis, das löst das Problem definitiv, auch wenn nicht auf die schönste Weise. Aber dafür kannst du nichts ;)