Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Views ›

Views: Feldwerte RAW / Divs entfernen

Eingetragen von kloewer@drupal.org (79)
am 15.12.2009 - 03:46 Uhr in
  • Views
  • Drupal 6.x

Ich möchte gerne in einem Views nur auf die Werte von Feldern zugreifen können, um diese ganz nach meinen eigenen Bedürfnissen Formatieren zu können.

Habe mir ein Views erstellt, Darstellung: Unformatiert, Zeilendesign: Felder, und für dieses auch gleich ein Views Template erstellt (views-view-fields.tpl.php), dort allen überflüssigen Code rausgelöscht und erhalte nun auch jede Zeile einzelnd und die jeweiligen Werte schön ordentlich hintereinander geschrieben...

<?php foreach ($fields as $id => $field): ?>
  
     <?php print $fields['title']->content; ?>
  
<?php endforeach; ?>

NUR: Drum herum um jede Zeile ist ein DIV-Tag.

==

Also das ganze noch mal mit views-view-unformatted.tpl.php

<?php foreach ($rows as $id => $row): ?>
    
     <?php print $row; ?>
     
<?php endforeach; ?>

Jetzt wird alles schon hintereinander geschrieben, keine Divs, kein garnichts.

NUR: Jetzt kann mann die einzelnden Felder nicht mehr seperat ansprechen

<?php print $row['title']; ?>

funktioniert nicht, weder

<?php print $row->{$field->title}; ?>

noch

<?php print $row->title; ?>

:(

Hat jemand einen Tip für mich?

‹ Übersicht erstellen, welche Formulare schon ausgefüllt wurden? CCK Field Poll mit Javascript ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Felder

Eingetragen von stBorchert (6003)
am 15.12.2009 - 08:40 Uhr
kloewer@drupal.org schrieb

Hat jemand einen Tip für mich?

Schau Dir mal an, welche Daten in $row enthalten sind.

<?php
drupal_set_message
('<pre>' . var_export(array_keys((array)$row), 1) . '</pre>');
?>

und dann
<?php
drupal_set_message
('<pre>' . var_export($row, 1) . '</pre>');
?>

Auf die einzelnen Felder greifst Du idealerweise immer in der views-view-fields.tpl.php (oder einem Ableger davon) zu.
Dann jedoch ohne foreach, sondern direkt jedes Feld einzeln.
Beispiel:

<div class="slideshow-image">
  <?php print $fields['field_slides_fid']->content; ?>
</div>
<?php
if ($fields['field_slides_data']->content && $fields['field_slides_data_1']->content) {
?>

<div class="slideshow-info">
  <div class="info-header"><?php print $fields['field_slides_data']->content; ?></div>
  <div class="info-content"><?php print $fields['field_slides_data_1']->content; ?></div>
</div>
<?php }?>

hth,

 Stefan

--
Sei nett zu Deinem Themer!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Klappt noch nicht so ganz...

Eingetragen von kloewer@drupal.org (79)
am 15.12.2009 - 11:55 Uhr

Also, Es geht um die Ausgabe eines Titels, einer Bild Datei und den Angaben latitude und Longitude, View hat die Einstellungen "Darstellung: Unformatiert", "Zeilendesign: Felder", die Felder die ausgegeben werden sind "title" "field_bild_fid" "Field_lat_value" und "field_long_value", in meiner views-view-unformatted.tpl.php steht folgendes:

<?php foreach ($rows as $id => $row): ?>
  
    <?php
   
print($row);
   
?>

     
<?php endforeach; ?>

als Ausgabe erhalte ich sehr schön ohne jegliches HTML:

Stop!      sites/default/files/stop.jpg      52.9792      8.6685      Biene Maja      sites/default/files/bienemaja.jpg      52.5231      8.4815      Hasy Wasch      sites/default/files/HasyWash.jpg      52.4973      8.4503 

Füge ich jetzt

<?php
drupal_set_message
('<pre>' . var_export(array_keys((array)$row), 1) . '</pre>');
?>

ein erhalte ich zusätzlich folgende Ausgabe:

array (
  0 => 0,
)

Bei

<?php
drupal_set_message
('<pre>' . var_export($row, 1) . '</pre>');
?>

außerdem noch den Inhalt des letzten Beitrages:

' 
 
                Hasy Wasch
 
 
 
                sites/default/files/HasyWash.jpg
 
 
 
                52.4973
 
 
 
                8.4503
 
'

  • Anmelden oder Registrieren um Kommentare zu schreiben

row

Eingetragen von stBorchert (6003)
am 15.12.2009 - 12:03 Uhr

Wie schon gesagt: die Feldausgaben machst Du in der views-view-fields.tpl.php. $row enthält die bereits fertig gerenderte Zeile (wird also nach views-view-fields.tpl.php aufgerufen).

 Stefan

--
Sei nett zu Deinem Themer!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Gelöst!

Eingetragen von kloewer@drupal.org (79)
am 15.12.2009 - 12:35 Uhr

Thnx Stefan für deine Mühe!

Mit der views-view-fields.tpl.php hatte ich schon gearbeitet, bin aber nicht zu dem gewünschten Ergebniss gekommen.

Grund: In der views-view-fields.tpl.php kann ich zwar die einzelnden felder ansprechen, die Ausgabe der Reihe erfolgt aber danach durch das views-view-list.tpl.php, dort wurde dann auch der unerwünschte CSS Code hinzugefügt.

Ich muss also beide views Themen, eines für die Anordnung der einzelnden Felder und eines für die Ausgabe der Reihe als solches.

###

ACHTUNG! Im Views Theme Ordner (z.B. /site/all/modules/view/theme/) befindet sich auch eine views-view-list.tpl.php, evtl muss diese durch eine views-view-list--MEIN-VIEW.tpl.php Datei die sich im Theme Ordner des jeweiligen Themes befindet überschrieben werden.

###

Meine views-view-fields.tpl.php

<?php
// $Id: views-view-fields.tpl.php,v 1.6 2008/09/24 22:48:21 merlinofchaos Exp $
/**
* @file views-view-fields.tpl.php
* Default simple view template to all the fields as a row.
*
* - $view: The view in use.
* - $fields: an array of $field objects. Each one contains:
*   - $field->content: The output of the field.
*   - $field->raw: The raw data for the field, if it exists. This is NOT output safe.
*   - $field->class: The safe class id to use.
*   - $field->handler: The Views field handler object controlling this field. Do not use
*     var_export to dump this object, as it can't handle the recursion.
*   - $field->inline: Whether or not the field should be inline.
*   - $field->inline_html: either div or span based on the above flag.
*   - $field->separator: an optional separator that may appear before a field.
* - $row: The raw result object from the query, with all data it fetched.
*
* @ingroup views_templates
*/
?>




Titel: <?php print $fields['title']->content; ?>
Bild: <?php print $fields['field_bild_fid']->content; ?>
Latitude: <?php print $fields['field_lat_value']->content; ?>
Longitude: <?php print $fields['field_long_value']->content; ?>
<br>

Meine views-view-list--MEIN-VIEW.tpl.php

<?php
// $Id: views-view-list.tpl.php,v 1.3 2008/09/30 19:47:11 merlinofchaos Exp $
/**
* @file views-view-list.tpl.php
* Default simple view template to display a list of rows.
*
* - $title : The title of this group of rows.  May be empty.
* - $options['type'] will either be ul or ol.
* @ingroup views_templates
*/
?>




    <?php foreach ($rows as $id => $row): ?>
      <?php print $row; ?>
    <?php endforeach; ?>

Ausgabe:

Titel: Stop!      Bild: sites/default/files/stop.jpg      Latitude: 52.9792      Longitude: 8.6685     
Titel: Biene Maja      Bild: sites/default/files/bienemaja.jpg      Latitude: 52.5231      Longitude: 8.4815     
Titel: Hasy Wasch      Bild: sites/default/files/HasyWash.jpg      Latitude: 52.4973      Longitude: 8.4503 

Alles super, alles happy, hoffe das andere die das gleiche Problem haben durch diesen Beitrag schneller ans Ziel kommen! ;)

THNX noch mal an Stefan!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Feldnamen in $fields?

Eingetragen von milton (25)
am 07.02.2010 - 11:28 Uhr

Moin,

möchte mich hier mal einklinken, weil ich vor einem ähnlichen Problem stehe.

Ich habe einen Inhaltstyp 'News' mit Titel, Bild und Kurzbeschreibung. In der views-view-fields.tpl.php wollte ich nun wie oben beschrieben, den content der einzelnen Felder direkt ansprechen.

print $fields['title']->content;

...ist kein Problem. Aber wie weiss ich, wie die anderen Felder in dem Array heissen? Also habe ich ein print_r von $fields in eine Datei umgeleitet, um mir den Inhalt anzuschauen. Dort finde ich aber nur 2 Felder: created und title.

Obwohl created vorhanden ist, kann ich den Inhalt nicht ausgeben???

print $fields['created']->content;

...keine Ausgabe, obwohl das Array $fields, so beginnt:

Array
(
    [created] => stdClass Object
        (
            [content] => 21.01.2010 - 22:44
            [raw] => 1264110273
            ...

Und jetzt wird's echt merkwürdig. Wenn ich $fields über eine Schleife ausgebe, werden alle Inhalte (Titel, Bild und Kurzbeschreibung) ausgegeben.

foreach ( $fields as $f ) {
print $f->content . "<br />\n";
}

Das ist aber nicht das, was ich will. Ich möchte die Inhalte ja in meinem eigenen (unaufgeblähten) Markup platzieren.

Was mache ich falsch?

PS: ich habe auch mal

drupal_set_message('<pre>' . var_export(array_keys((array)$fields), 1) . '</pre>');

ins View geschrieben, aber da passiert überhaupt nichts.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich kann nicht sehen,

Eingetragen von wla (9461)
am 07.02.2010 - 11:47 Uhr

Ich kann nicht sehen, welches Array Du hier zeigst. Die Namen in $fields sind die internen Namen der CCK-Felder, die Du ausgibst. Du gibst ja bei der Erstellung immer den lesbaren und den internen Namen pro Feld an. Daneben hast Du die Felder die $node von Hause aus mitbringt (z.B. $title), aber nur, wenn Du sie im View auch als Feld ausgibst.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Denkfehler

Eingetragen von milton (25)
am 07.02.2010 - 11:57 Uhr

Ich hatte in die views-view-fields.tpl.php folgenden code platziert:

file_put_contents('fields.txt', print_r($fields, true));

So wurde die Datei natürlich in jedem Durchlauf überschrieben. Irgendwie war ich gedanklich nicht dabei, dass es sich hier immer um einen Eintrag handelt.

file_put_contents('fields.txt', print_r($fields, true), FILE_APPEND);

...brachte Licht ins Dunkel.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 5 Tagen
  • Hey danke
    vor 2 Wochen 6 Tagen
  • Update: jetzt gibt's ein
    vor 3 Wochen 10 Stunden
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 4 Tagen
  • Da scheint die Terminologie
    vor 3 Wochen 4 Tagen
  • Kannst doch auch alles direkt
    vor 4 Wochen 2 Tagen
  • In der entsprechenden View
    vor 4 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 4 Wochen 2 Tagen
  • gelöst
    vor 6 Wochen 5 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20465

Neue User:

  • Znogsnernoimb
  • ByteScrapers
  • Mroppoofpaync

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 23 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association