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

Table View: Titel mal verlinkt mal nicht

Eingetragen von mart1n (40)
am 06.01.2009 - 17:59 Uhr in
  • Views
  • Drupal 5.x

Hallo Leute,

folgende Situation:

Ich habe eine Table View in der zwei Inhaltstypen angezeigt werden. In der Tabelle wird unter anderem der Node Titel angezeigt.
Ich möchte nun, dass wenn ein Node vom Typ1 ist der Node Titel auf die Node verlinkt wird. Ist ein Node vom Typ2 soll der Node Titel nur normaler Text und kein Link sein.

Ich habe es zuerst in der template.php über eine phptemplate_views_handle_field_ funktion und anschließend über eine phptemplate_views_view_table_ funktion probiert. Allerdings weiß ich nicht, wie ich den Inhaltstyp abfragen kann um dann eben einmal verlinken zu können und einmal nicht.

Gruss Martin

‹ ein view bezogen auf ein taxonomy/term unter jedem node Startseite einer View anpassen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Node typ

Eingetragen von stBorchert (6003)
am 07.01.2009 - 10:00 Uhr

Moin!
Immer noch das Problem aus dem IRC von gestern (unten nochmal der Code)?
In der phptemplate_views_view_table_, die Du gezeigt hattest, wurde doch das node-Objekt verwendet, um die einzelnen Zeilen zu erzeugen. Dieses Objekt enthält unter Anderem auch den von Dir gesuchten Inhaltstyp: $node->type.
Zusätzlich kannst Du das node-Objekt an eine Theme-Funktion für das Feld übergeben, so dass Du auch in dieser Funktion Zugriff auf sämtliche Attribute des Objekts (inkl. des Inhaltstyps) hast (siehe unten).

Die Funktion views_theme_field() sucht zuerst nach der Funktion theme_views_handle_field_<VIEWNAME>_<TABLENAME>_<FIELDNAME>(), dann nach theme_views_handle_field_<TABLENAME>_<FIELDNAME>() und zu guter Letzt nach theme_views_handle_field().
Alle drei Funktionen erwarten 3 Argumente: $fields, $field, $data. In $data steht das übergeben node-Objekt, so dass Du mit $data->type den Inhaltstyp bekommen solltest.

<?php

function phptemplate_views_view_table_blah_erledigt($view, $nodes, $type) {
 
$fields = _views_get_fields();

  foreach (
$nodes as $node) {
   
$row = array();
    foreach (
$view->field as $field) {
      if (
$fields[$field['id']]['visible'] !== FALSE) {
       
$cell['data'] = views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view);
       
$cell['class'] = "view-field ". views_css_safe('view-field-'. $field['queryname']);
       
$row[] = $cell;
      }
    }
   
$rows[] = $row;
  }
 
$table = theme('table', $view->table_header, $rows, array('cellspacing'=>'0', 'border'=>'0'));
 
$fieldset = array(
    
   
'#title' => t('Erledigte Sachen (!numrows)', array('!numrows' => $GLOBALS['current_view']->num_rows)),
   
'#description' => t('Eine Liste aller erledigten Sachen (standardm&auml;&szlig;ig ausgeblendet).'),
   
'#collapsible' => TRUE,
   
'#collapsed' => TRUE,
   
'#value' => $table,
  );
  return
theme('fieldset', $fieldset);
}


function
phptemplate_views_handle_field($fields, $field, $data) {
  print
'Inhaltstyp: ' . $data->type;
}
?>

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Morgen, ja richtig immernoch

Eingetragen von mart1n (40)
am 07.01.2009 - 10:52 Uhr

Morgen,

ja richtig immernoch das gleiche Problem.
Ich habs jetzt nochmal versucht aber im Array $data gibts bei mir kein type.

Das ist alles was ich über

<?php
function phptemplate_views_handle_field_node_title($fields, $field, $data) {
  print
"<pre>";
 
print_r($data);
  print
"</pre>";
  return
check_plain($data->$field['queryname']);
}
?>

für einen node bekomme

stdClass Object
(
    [nid] => 425
    [field_alarm_value] => 2008-10-21T10:36:00
    [node_data_field_alarm_field_alarm_value] => 2008-10-21T10:36:00
    [node_data_field_einsatznummer_0_field_einsatznummer_0_value] => 5-013
    [node_title] => Angebranntes Essen
    [node_changed] => 1229766493
    [date_id] => Array
        (
        )

    [date_repeat_show] =>
)

Gruss Martin

  • Anmelden oder Registrieren um Kommentare zu schreiben

view

Eingetragen von stBorchert (6003)
am 07.01.2009 - 11:06 Uhr

Hm, seltsam.
Naja, macht ja nichts. Dann holen wir uns den Typ halt selbst :-).
Entweder Du lädst Dir das komplette Node-Objekt mittels node_load() (ist jedoch zu performancehungrig für diese kleine Abfrage), oder Du schreibst die Abfrage selbst:

<?php
function my_node_get_type($node) {
 
$type = null;
 
$nid = 0;
  if (
is_object($node)) {
    if (isset(
$node->type)) {
      return
$node->type;
    }
   
$nid = $node->nid;
  }
  elseif (
is_numeric($node)) {
   
$nid = $node;
  }
  if (
$nid > 0) {
   
$result = db_query('SELECT nid, type FROM {node} WHERE nid = %d', $nid);
   
$nd = db_fetch_object($result);
    return
$nd->type;
  }
  return
$type;
}
?>

Mit dieser Funktion (die Du irgendwo in die template.php packst, kannst Du dann den Typ eines Node-Objekts oder einer Node-Id bestimmen.

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Jipiee funktioniert! Vielen

Eingetragen von mart1n (40)
am 07.01.2009 - 11:43 Uhr

Jipiee funktioniert!

Vielen Dank

Gruss Martin

  • 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 6 Tagen
  • Hey danke
    vor 3 Wochen 18 Stunden
  • Update: jetzt gibt's ein
    vor 3 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 3 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 4 Wochen 3 Tagen
  • In der entsprechenden View
    vor 4 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 4 Wochen 3 Tagen
  • gelöst
    vor 6 Wochen 6 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 7 Wochen 18 Stunden

Statistik

Beiträge im Forum: 250233
Registrierte User: 20461

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 31 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