Views Ausgabe teilen.
Eingetragen von d4rk1 (117)
am 06.06.2011 - 23:36 Uhr in
am 06.06.2011 - 23:36 Uhr in
Hallo Freunde,
hat schon mal einer die Views-Ausgabe in einer tpl geteilt?
6 Kasten werden bei mir ausgegeben in 2 Spalten je 3 Kasten.
Ich möchte quasy erst 3 Anzeigen dann in tpl was reinschreiben dann wieder 3 Anzeigen.
Hat da jemand ne Snipet oder ne Rat?
MFG
<?php if (!empty($title)) : ?>
<h3><?php print $title; ?></h3>
<?php endif; ?>
<table class="views-view-grid"<?php print $attributes; ?>>
<tbody>
<?php foreach ($rows as $row_number => $columns): ?>
<tr class="<?php print $row_classes[$row_number]; ?>">
<?php foreach ($columns as $column_number => $item): ?>
<td class="<?php print $column_classes[$row_number][$column_number]; ?>">
<div class="spacer">
<?php print $item; ?>
</div>
</td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo,ich füge mit einem
am 07.06.2011 - 00:52 Uhr
Hallo,
ich füge mit einem Minimodul, nach dem 8ten Row eines Views einen Werbelink ein.
Das könntest Du auch für Dein Problem nutzen.
<?php
function MEIN_MODULNAME_preprocess_views_view_unformatted(&$vars) {
if ($vars['view']->name == 'MEIN_VIEWNAME' && $vars['view']->current_display == 'page_1') {
$rows = $vars['rows'];
// Position of ad in listing.
$ad_position = min(8, count($rows)); // nach dem 8ten Row soll der Link eingefüht werden. Bei Dir muss dort eine 3 rein.
$classes = $vars['classes'];
$rows_new = array();
$classes_new = array();
for ($i = 0; $i < $ad_position; $i++) {
$rows_new[] = $rows[$i];
$classes_new[] = $classes[$i];
}
// Add ad.
$rows_new[] = t(l('Mein Werbetext', 'urlzurwerbeseite', array('attributes' => array('target' => '_blank')))); // Hier kommt Dein Text(was auch immer) rein
$classes_new[] = 'view-affili-ad';
for ($i = $ad_position; $i < count($rows); $i++) {
$rows_new[] = $rows[$i];
$classes_new[] = $classes[$i];
}
$vars['rows'] = $rows_new;
$vars['classes'] = $classes_new;
}
}
?>
Gruß Matthias
Drupal rockt!!!
re.
am 07.06.2011 - 09:35 Uhr
Danke dir, probier ich aus!
Du könntest Dir Teile des
am 07.06.2011 - 12:12 Uhr
Du könntest Dir Teile des obigen Codes auch so umbiegen, dass Du ihn dann direkt in Dein tpl-File einfügst, dort die rows countest und danach den ensprechenden Text/Link/wasauchimmer einfügst.
Drupal rockt!!!
re
am 07.06.2011 - 12:56 Uhr
Irgendwie klappt das mit dem Mini-Module nicht... und ich bin leider nicht so der php professional
Hast Du die Function korrekt
am 07.06.2011 - 13:22 Uhr
Hast Du die Function korrekt mit dem Namen Deines Moduls versehen?
Wenn ja ....
Hast Du den korrekten Viewnamen verwendet und eingefügt?
Wenn ja ....
Was für einen View nutzt Du? Seite, Block, Attachment/Anhang?
Drupal rockt!!!
<?phpfunction
am 07.06.2011 - 14:08 Uhr
<?php
function teiler_preprocess_views_view_unformatted(&$vars) {
if ($vars['view']->name == 'auflistung_unternehmen' && $vars['view']->current_display == 'page_1') {
$rows = $vars['rows'];
// Position of ad in listing.
$ad_position = min(3, count($rows)); // nach dem 8ten Row soll der Link eingefüht werden. Bei Dir muss dort eine 3 rein.
$classes = $vars['classes'];
$rows_new = array();
$classes_new = array();
for ($i = 0; $i < $ad_position; $i++) {
$rows_new[] = $rows[$i];
$classes_new[] = $classes[$i];
}
// Add ad.
$rows_new[] = t(l('Mein Werbetext', 'urlzurwerbeseite', array('attributes' => array('target' => '_blank')))); // Hier kommt Dein Text(was auch immer) rein
$classes_new[] = 'view-affili-ad';
for ($i = $ad_position; $i < count($rows); $i++) {
$rows_new[] = $rows[$i];
$classes_new[] = $classes[$i];
}
$vars['rows'] = $rows_new;
$vars['classes'] = $classes_new;
}
}
?>
views-view-grid--auflistung-unternehmen--block.tpl <-- meine tpl
Modul hab ich teiler genannt und ich verwende Design Raster für ein Block.
Danke dir.
Wenn Du einen Block
am 07.06.2011 - 14:26 Uhr
Wenn Du einen Block verwendest muss "page_1" durch "block_1" ersetzt werden - vorausgesetzt es ist der erste Block im View. Wenn Du mehrere Blöcke im View verwendest, musst Du die Numerierung anpassen "block_2" "block_3" (was auch immer). Fahre einfach mal mit der Maus (im linken Views-Menü - wo "standard/Seite/Block" steht) über den Block, dann siehst Du die richtige Nummer.
<?php
if ($vars['view']->name == 'auflistung_unternehmen' && $vars['view']->current_display == 'block_1')
?>
So müsste es funktionieren.
Nochwas - der PHP-End-Tag ?> wird im Modul nicht gesetzt - also löschen!
Gruß Matthias
Drupal rockt!!!
re
am 07.06.2011 - 14:49 Uhr
Hi,
hab ein Denkfehler gehabt... bzw läuft unter "Design unformatiert" 1a. wenn ich aber Raster anmache gehts net mehr.
# # #
hier rein
# # #
views_view_unformatted <-- gibts auch sowas mit tabellen?
MFG
Klick doch einfach mal auf
am 07.06.2011 - 14:53 Uhr
Klick doch einfach mal auf "Darstellung" in Deinem View. Da kannst Du "Tabelle" auswählen. Dazu kannst Du Dir dann das entsprechende tpl-File anlegen.
Drupal rockt!!!
hi
am 07.06.2011 - 15:30 Uhr
ich meine das die Funktion nur auf "_preprocess_views_view_unformatted(&$vars)" geht,
wenn ich in meiner View als Design -> Raster oder Tabelle anklicke geht die Funktion nicht mehr.
Danke im Vorraus
ach ja unformatet funkt ja sehr gut.. nur bekomme eine Fehlermeldung
Notice: Undefined offset: 6 in include() (Zeile 14 von sites\all\modules\views\theme\views-view-unformatted.tpl.php).
Dann musst Du Dir den Aufbau
am 07.06.2011 - 15:46 Uhr
Dann musst Du Dir den Aufbau der preprocess-Funktion anschauen und entsprechend umschreiben.
Zur Fehlermeldung kann ich leider nichts sagen!
Edit:
Habs nicht ausprobiert aber lass doch einfach mal "unformatted" weg und schau ob es dann klappt.
_preprocess_views_view(&$vars)
Drupal rockt!!!
re
am 07.06.2011 - 17:58 Uhr
Leider geht net... haste das mit D7 probiert?
Danke dir für die Hilfe.
Ach Mist. Du nutzt ja Drupal
am 07.06.2011 - 19:28 Uhr
Ach Mist. Du nutzt ja Drupal 7. Dazu kann ich leider nichts sagen da ich nur 6 nutze. Die API hat sich ja teilweise verändert. Da musst Du mal nachsehen wie da die preprocess-function verwendet wird.
Drupal rockt!!!