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

[gelöst] [View] Feld abhängig vom Inhalt formatieren

Eingetragen von Meister Lampe (36)
am 24.09.2012 - 13:03 Uhr in
  • Views
  • Drupal 7.x

Hi,

ich habe mir einen tabellarischen View andgelegt und möchte nun den Text in 2 Spalten je nach Inhalt formatieren.
Im Speziellen geht es um einen "Begriff" ("OSV Zittau") den ich, egal in welcher Spalte er auftritt, fett dargestellt haben möchte.

Beim suchen im Internet bin ich schon auf diverse Ansätze gestoßen, so auch auf folgenden:

<?php
function theme_preprocess_views_view_fields(&$vars) {
  if (
$do_your_checks) {
   
$vars['fields']['field_name'] = preg_replace(...) // Use regular expression to change title.
 
}
}
?>

Wie preg_replace funktioniert weiß ich auch allerdings muss ich nun die vermeintlich dumme Frage stellen:
Wo muss diese Funktion hin und wie bringe ich Drupal bei diese Funktion nur in meinem View zu nutzen? (vermutlich als Abfrage anstelle von $do_your_checks ?)

Gibt es vielleicht einen anderen Weg das Problem zu lösen?

Von Veränderungen im Drupalsystem oder gar von Modulentwicklung habe ich derzeit absolut null Ahnung, daher meine Frage.

Hoffe mir kann geholfen werden.

LG Benni

‹ Problem beim Menü erstellen [gelöst] Zweites Argument beim Kontextfilter einer View ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe auch mal gegoogled

Eingetragen von wla (9461)
am 24.09.2012 - 15:12 Uhr

Ich habe auch mal gegoogled und dabei folgendes Snippet gefunden

<?php 
function NAME-OF-THEME_preprocess_views_view_fields(&$vars, $hook){

// machine name of view
if ($vars['view']->name == 'homepage_slideshow') {
..........
?>

Das gehört in die template.php in Deinem Theme und NAME-OF-THEME muß durch den Namen Deines Themes ersetzt werden. In den anderen Funktionen dort nachsehen, wie die anfangen.
Du mußt selbst dafür sorgen, daß diese Funktion nur bei Deinem speziellen View ausgeführt wird (daher die Abfrage).

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Erstmal Danke für die

Eingetragen von Meister Lampe (36)
am 24.09.2012 - 15:54 Uhr

Erstmal Danke für die Hilfe.

Blamiert habe ich mich da wohl..

Da töne ich erst, dass ich weiß wie es geht aber anscheinend weiß ich es nicht.

Mein Theme war bisher ein Subtheme von Bartik ohne eigene template.php
Ich habe nun die template.php kopiert und alle Vorkommen von bartik mit osv (so heißt mein Theme) ersetzt.

Um mein Ziel zu erreichen habe ich folgenden Code hinzugefügt:

<?php

/**
* Implements the formatting for OSV Zittau View
*/
function osv_preprocess_views_view_fields(&$vars, $hook){
if (
$vars['view']->name == 'view_spielplan') {
  
$vars['field']['field_heim'] = preg_replace("OSV Zittau", "<strong>OSV Zittau</strong>", $vars['field']['field_heim']);
}
if (
$vars['view']->name == 'view_spielplan') {
  
$vars['field']['field_gast'] = preg_replace("OSV Zittau", "<strong>OSV Zittau</strong>", $vars['field']['field_gast']);
}
}

?>

ich nehme ja an, dass

<?php
$vars
['fields']['field_name']
?>

field_name für den namen meines Feldes, also einmal field:heim und einmal field_gast, steht. Liege ich da schon falsch?

Leider konnte ich in der Ausgabe als Page (via View) keine Auswirkung feststellen. Liegt es nun, Gott bewahre, an meinem preg_replace oder habe ich so einen hook vergessen? O der liegt es vielleicht am output?
Habe in einer anderen function

<?php
$output
.= '<h3 class="field-label">' . $variables['label'] . ': </h3>';
return
$output;
?>

entdeckt. Muss ich das auch machen?

Bin da wirklich ratlos :-/

  • Anmelden oder Registrieren um Kommentare zu schreiben

Installiere Dir das Devel

Eingetragen von wla (9461)
am 24.09.2012 - 16:07 Uhr

Installiere Dir das [do:devel Devel Modul]. Dann kannst Du in Deine Routine dsm($vars['fields']); einbauen als zusätzliche Zeile am Beginn der Routine. Drupal gibt dann auf der Seite einen Bereich aus, indem Du die Struktur und auch den Inhalt der Variablen genau untersuchen kannst.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

So Leid es mir tut, aber es

Eingetragen von Meister Lampe (36)
am 24.09.2012 - 20:25 Uhr

So Leid es mir tut, aber es tut sich garnichts.

ich habe Devel installiert und dsm($vars['fields']); in meine Funktion geschrieben.

Es passiert nichts was wiederum wohl darauf deutet, dass meine Funktion nicht erst aufgerufen wird?

EDIT:
Ich konnte es inzwischen soweit eingrenzen, dass ich nun weiß das die Funktion nicht aufgerufen wird.

<?php
function osv_preprocess_page(&$vars) {
 
$views = $vars['page']['#views_contextual_links_info']['views_ui']['view']->field['field_gast'];//->name;
 
dpm($views);
}
?>

funktioniert. Aber direkt drunter

<?php
function osv_preprocess_views(&$vars, $hook) {
 
dpm($vars);
}
?>
funktioniert nicht.

Muss die Funktion noch "registriert" werden?

PS: ich rufe den view über www.domain.de/spielplan auf.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du mußt auch die korrekten

Eingetragen von wla (9461)
am 24.09.2012 - 20:33 Uhr

Du mußt auch die korrekten Funktionen verwenden:
Wie die Templates heißen können zeigt Dir Views ja unter Extras an. Die Funktionsnamen müssen entsprechend gebildet werden z.B.

Zitat:
  • mytheme_preprocess_views_view(&$vars) - generic for all views
  • mytheme_process_views_view(&$vars) - generic for all views
  • mytheme_preprocess_views_view_list(&$vars) - generic for List style views
  • mytheme_preprocess_views_view_field(&$vars) - generic for each field
  • etc.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nach inziwschen 67 Versuchen

Eingetragen von Meister Lampe (36)
am 25.09.2012 - 09:07 Uhr

Nach inziwschen 67 Versuchen (ja ich bin ein 'try and error' - Typ) habe ich inzwischen folgenden, funktionierenden Code:

<?php
function osv_preprocess_views_view_field(&$vars) {
   
$markup = $vars['row']->field_field_gast['0']['rendered']['#markup'];
    if(
$markup == 'OSV Zittau')    
     
$markup = preg_replace("/OSV Zittau/", "<strong>OSV Zittau</strong>", $markup);
     
dpm($markup);
}
?>

Mit diesem Code kann ich den Wert inzwischen ändern, leider wird er nicht als html interpretiert, liegt das jetzt vllt an meinen Feld-Typ?
Dieser ist Text, sollte er eher "Langer Text"? (der lange Text wird ja mit Filtered HTML umgesetzt)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Auch HTML- und CSS-Kenntnisse

Eingetragen von wla (9461)
am 25.09.2012 - 09:07 Uhr

Auch HTML- und CSS-Kenntnisse sind manchmal nötig. Ersetze im Markup OSV Zittau durch <span class="osvbold">OSV Zittau</span>. Dann kannst Du mittels CSS den Text in der Klasse osvbold auf Bold setzen.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Da haben sich mein Posting

Eingetragen von wla (9461)
am 25.09.2012 - 09:12 Uhr

Da haben sich mein Posting und Deine Änderung überschnitten. Was kommt den auf der Seite bei der Ausgabe an? Hast Du mal den Ergebnis HTML-Code angesehen?

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich hatte meinen Beitrag

Eingetragen von Meister Lampe (36)
am 25.09.2012 - 09:23 Uhr

Ich hatte meinen Beitrag nochmal geändert, da hat sich deine Antwort wohl überschnitten.
Und ob ich nun <strong>, <b> oder nen <span> mit Klasse nehme ist m.E. egal.

Es sieht im moment so aus:

Ich nehme an, dass die Variable die ich ändere nicht nochmal von Drupal verarbeitet wird, obwohl die function ja preprocess heißt...

AnhangGröße
inhalt_ungleich_anzeige.PNG 359.88 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

Du darfst nicht nur $markup

Eingetragen von wla (9461)
am 25.09.2012 - 10:01 Uhr

Du darfst nicht nur $markup verändern. Du mußt die Variable auch wieder in $vars einbringen. Die Variable $markup verläßt Deine Funktion nicht. Hast Du daran gedacht?

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ah super! An die Zeile <?php

Eingetragen von Meister Lampe (36)
am 26.09.2012 - 07:38 Uhr

Ah super!

An die Zeile

<?php
$vars
['row']->field_field_gast['0']['rendered']['#markup'] = $markup;
?>

habe ich natürlich nicht gedacht.

Nun klappt es endlich wie gewollt!

Meinen herzlichsten Danke für die Geduld und die kompetente Hilfe!

Grüße
Benni

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • 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?
Weiter

Neue Kommentare

  • Inzwischen sind wir bei
    vor 2 Tagen 8 Stunden
  • Migrieren von D7 auf D8/ D10/ D11
    vor 3 Tagen 59 Minuten
  • melde mich mal wieder, da ich
    vor 8 Wochen 4 Stunden
  • Hey danke
    vor 8 Wochen 23 Stunden
  • Update: jetzt gibt's ein
    vor 8 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 8 Wochen 6 Tagen
  • Da scheint die Terminologie
    vor 8 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 9 Wochen 3 Tagen
  • In der entsprechenden View
    vor 9 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 9 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250235
Registrierte User: 20462

Neue User:

  • marouane.blel
  • capilclinic
  • Quabzibboter

» 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 12 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