Bilder in field über Views tpl
am 30.09.2010 - 14:52 Uhr in
Hallo meine lieben,
ich habe im Netz einen wunderschönen Code gefunden (http://www.group42.ca/node_image_gallery_imagefield), mit dem hochgeladene Bilder über Imagefield in einem Node, schön unter- bzw. nebeneinander angezeigt werden – also in einem Raster. Die Template Datei heißt content-field-field_bilder.tpl.php und greift nur bei Nodeansicht.
Jetzt möchte ich aber, mit Views mehrere Beiträge listen, die immer ihre jeweiligen Bilder auch über dieses Template gesteuert haben.
Hier ist der Code von content-field-field_bilder.tpl.php
<?php
// $Id:$
/**
* @file content-field-field_mini-gallery.tpl.php
* Theme implementation to display multiple values in the mini-gallery field.
*
* Available variables:
* - $node: The node object.
* - $field: The field array.
* - $items: An array of values for each item in the field array.
* - $teaser: Whether this is displayed as a teaser.
* - $page: Whether this is displayed as a page.
* - $field_name: The field name.
* - $field_type: The field type.
* - $field_name_css: The css-compatible field name.
* - $field_type_css: The css-compatible field type.
* - $label: The item label.
* - $label_display: Position of label display, inline, above, or hidden.
* - $field_empty: Whether the field has any valid value.
*
* Each $item in $items contains:
* - 'view' - the themed view for that item
*
* @see template_preprocess_content_field()
*/
$columns = 4;
$rows = array_chunk($items, $columns);
?>
<?php if (!$field_empty) : ?>
<div class="seperator"></div>
<table class="mini-gallery">
<tbody>
<?php foreach ($rows as $row_number => $columns): ?>
<?php
$row_class = 'row-' . ($row_number + 1);
if ($row_number == 0) {
$row_class .= ' row-first';
}
if (count($rows) == ($row_number + 1)) {
$row_class .= ' row-last';
}
?>
<tr class="<?php print $row_class; ?>">
<?php foreach ($columns as $column_number => $item): ?>
<td class="<?php print 'col-'. ($column_number + 1); ?>">
<div class="photo-image"><?php print $item['view']; ?></div>
<div class="photo-title"><?php print $item['data']['title']; ?><div>
</td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php endif; ?>
Wenn ich diesen nun in views-view-field--field-bilder-fid.tpl.php kopiere
kommt immer die Fehlermeldung
* warning: array_chunk() expects parameter 1 to be array, object given in /is/**/views-view-field--field-bilder-fid.tpl.php on line 23.
* warning: Invalid argument supplied for foreach() in /**/views-view-field--field-bilder-fid.tpl.php on line 29.
Zeile 23 ist das: $rows = array_chunk($view, $columns);
Zeile 29 ist das: <?php foreach ($rows as $row_number => $columns): ?>
Wobei in der views-view-field--field-bilder-fid.tpl.php oben noch das steht:
* Variables available:
* - $view: The view object
* - $field: The field handler object that can process the input
* - $row: The raw SQL result that can be used
* - $output: The processed output that will normally be used.
*
* When fetching output from the $row, this construct should be used:
* $data = $row->{$field->field_alias}
Was mache ich falsch? Kann mir hier bitte jemand helfen? Ich weiß nicht mehr weiter...
- Anmelden oder Registrieren um Kommentare zu schreiben
Zitat: $rows =
am 02.10.2010 - 16:25 Uhr
$rows = array_chunk($view, $columns);
Der Fehler in Zeile 29 ist ein Folgefehler, weil in obiger Zeile
$rows
nicht richtig befüllt ist.$view
ist das View-Object und nicht das Array vom Bilder-Feld.Abgesehen davon, dass ich nicht weiss ob dein Konstrukt so überhaupt funktioniert versuch mal
$output
zu verwenden.Oder
$row->{$field->field_bilder}