link und/oder datei via computed field in einer view ausgeben
am 19.11.2010 - 08:44 Uhr in
Hallo liebe Drupal Profis,
ich möchte eine Ansicht erzeugen, die mir zeilenweise Termine mit "Datum", "Ort", und "Zeit" ausgibt. Hierfür habe ich einen Inhaltstyp "Termin" generiert, der u.a. die (Eingabe)felder "field_datum", "field_ort", und "field_zeit" enthält. Mit einer View lasse ich mir dann die gewünschte Liste ausgeben. Jetzt möchte ich die Anzeige um eine Spalte "weitere Infos" erweitern, in der entweder ein Link auf eine externe URL oder auf eine hochgeladene Datei angezeigt werden soll, abhängig davon, welche Information ein Benutzer eingibt. Meine Ansatz war mir zwei weitere (Eingabe)felder im Inhaltstyp "Termin" zu generieren - eines um einen Link einzufügen (field_link, typ "link") und eines um dateien hochzuladen (field_datei, type "datei") - und darüber hinaus auch ein "computed field", in dem je nach Eingabe entweder den Wert des Feldes "field_link" oder des Feldes "field_datei" abgespeichert werden soll. Dazu habe ich folgenden php-code im Feld "Berechneter Code" der "computed field settings" eingegeben:
<?php
if (!$node->field_link['0']['value']) {
if (!$node->field_file['0']['value']) {
$node_field[0]['value'] = "";
}
else {
$node_field[0]['value'] = $node->field_file[0]['value'];
}
}
else {
$node_field[0]['value'] = $node->field_link[0]['value'];
}
?>
Auf das "computed field" kann ich dann mit meiner View zugreifen - allerdings bleibt die Ausgabe bisher leer :-( (wenn ich das computed field testweise anstelle der Felder "field link" und "field_date" auf ein textfeld (z.B. "Ort" loslasse bekomme ich den korrekten Inhalt in der View angezeigt).
Ich vermute daher, dass entweder
- die Zuweisung von Feldern vom Typ "link" oder "datei" auf "computed field" komplizierter ist ich in meinem code angenommen habe, oder/und
- weitere Einstellungen in den "computed field settings" getätigt werden müssen, die ich nicht kenne oder/und
- weitere Einstellungen in der View getätigt werden müssen
Falls sich jemand die Mühe machen möchte, sich mit meinem Problem zu beschäftigen wäre ich für jede Antwort sehr dankbar,
viele Grüße
Martin
- Anmelden oder Registrieren um Kommentare zu schreiben
Wenn Du noch ein
am 19.11.2010 - 10:05 Uhr
Wenn Du noch ein print-Statement spendierst, sollte auch eine Ausgabe erfolgen.
<?php
if (!$node->field_link['0']['value']) {
if (!$node->field_file['0']['value']) {
$node_field[0]['value'] = "";
}
else {
$node_field[0]['value'] = $node->field_file[0]['value'];
}
}
else {
$node_field[0]['value'] = $node->field_link[0]['value'];
}
print $node_field[0]['value'];
?>
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Hallo Werner, vielen Dank für
am 19.11.2010 - 13:00 Uhr
Hallo Werner,
vielen Dank für die schnelle Antwort - leider hat sie aber keinen Erfolg gebracht :-(
vielleicht liegt es an meinen weiteren Einstellungen:
Einstellungen "computed field":
<?php
$display = $node_field_item['value'];
?>
Einstellungen der View (Typ "Beitrag") im Felder "computed field":
vielleicht ist meinen Fehler jetzt offensichtlich (?),
viele Grüße,
Martin
Nimm views_customfield und
am 19.11.2010 - 14:37 Uhr
Nimm [do:views_customfield views_customfield] und nutze darin PHP-Code, schließlich brauchst Du das Feld ja eigentlich nur bei der Ausgabe in Views. Damit geht das einfacher.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Hallo Werner, ich glaube, wir
am 20.11.2010 - 09:19 Uhr
Hallo Werner,
ich glaube, wir sind fast am Ziel - wenn Du mir jetzt noch ein Beispiel für den einzugebenden php-code geben könntest wäre das super (habe keine Erfahrung mit php). Das "computed field" kann ich mir in diesem Fall dann sparen, oder?
Viele Grüße und vielen Dank für Deine Hilfe,
Martin
Hallo Martin Hier mal ein
am 20.11.2010 - 11:34 Uhr
Hallo Martin
Hier mal ein Beispiel dazu:
<?php
print '<h3>' . $data->term_data_name . '</h3>';
print views_embed_view('Linksammlung', 'page_1', $data->term_data_name);
?>
SELECT term_data.tid AS tid,
term_data.name AS term_data_name,
term_data.vid AS term_data_vid
FROM term_data term_data
WHERE term_data.vid in ('7')
Du mußt die Felder, die Du im "Computed Field" benutzen willst vorher in der Felderliste haben und (evtl) von der Anzeige ausschließen. Aber nur wenn die in der Liste sind, kannst Du an die Inhalte. Oben siehst Du, daß ich ein Feld als Argument übergebe. Den genauen Namen des Feldes kannst Du in der zugehörigen Query sehen (bekommst Du mittels Vorschau-Button). Ansonsten ist es die selbe Logik wie oben.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Hallo Werner, kann ich leider
am 21.11.2010 - 19:24 Uhr
Hallo Werner,
kann ich leider nicht nachvollziehen - die Felder, deren Inhalt ich ausgeben möchte heissen "field_link", bzw. "field_file" und sind vom Typ "Link", bzw. "Datei" - wie würde denn der views-customfield-PHP-code aussehen, wenn ich mir in der Ansicht z.B. einfach nur den link, der in "field_link" eingegeben wurde anzeigen lassen möchte?
Bitte entschuldige meine Nachfragen, viele Grüße,
Martin