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

Calendar - Tagesansicht verändern

Eingetragen von Kreba (88)
am 03.11.2007 - 21:09 Uhr in
  • Module
  • Drupal 5.x

Hallo,
ich habe das Calendar-Modul installiert. Ich lass einen Inhaltstyp über das Modul anzeigen, in den ich zusätzliche Felder eingefügt hab. In der Monatsansicht kann ich festlegen, welche Felder angezeigt werden sollen. Da lass ich nur den Titel und die Startzeit der Veranstaltung zu. In der Tagesansicht werden leider alle Felder angezeigt. Ich möchte aber auch da nur bestimmte Felder anzeigen lassen. Kann ich das irgendwo einstellen?

‹ Buddyliste im Profil mit Zufallsbild CSV-Import - Tabellendarstellung ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Nimm Dir mal das Calendar

Eingetragen von quiptime (4972)
am 03.11.2007 - 21:50 Uhr

Nimm Dir mal das Calendar Modul zur Brust.

In der Moduldatei calendar.theme:

<?php
/**
* Format a calendar view
*
* @param day
*   The day to display.
*/
function theme_calendar_day($op, $header, $rows) {
  if (
strstr($header[0]['data'], '<table')) {
   
$output = $header[0]['data'];
   
$header = array();
  }
 
$output .= theme("table", $header, $rows);
  return
'<div class="calendar-calendar"><div class="day-view">'. $output ."</div></div>\n";
}

/**
* Format an calendar node for display in an expanded calendar, like a calendar page
*
* @param node
*   The node being displayed
*/
function theme_calendar_node_day($node) {
 
$output .= '<div class="calendar dayview">'."\n";
 
$output .= theme('calendar_stripe_stripe', $node);

 
$output .= '<h2 class="title">'. l($node->title, "$node->url", array('title' => t('view this item'))) .'</h2>'."\n";

 
$output .= '<div class="times">';
 
$output .= '<span class="start">'. $start_label . $node->start_format .'</span>'."\n";
  if (
$node->calendar_start != $node->calendar_end && $node->calendar_end) {
   
$output .= '<span class="end"> - '. $end_label . $node->end_format .'</span>'."\n";
  }
 
$output .= '</div>';

  if (
$node->teaser) {
   
$output .= '<div class="content">'. ($node->teaser) ."</div>\n";
  }
 
$output .= '<div class="links">'. theme('links', $node->calendar_links) ."\n</div>";
 
$output .= "</div>\n";
  return
$output;
}
?>

ist der Ansatzpunkt. Nun ist die Frage welche Felder "abgeschalten" werden sollen. Vermutlich braucht man noch ne andere theme Funktion.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe die Ausgabe auf

Eingetragen von Kreba (88)
am 03.11.2007 - 22:10 Uhr

Ich habe die Ausgabe auf diese Zeile eingegrenzt:

$output .= '<div class="content">'. check_markup($node->teaser) ."</div>\n";

wohin aber check_markup($node->teaser) verweist habe ich noch nicht raus.

  • Anmelden oder Registrieren um Kommentare zu schreiben

node_view($node, TRUE, FALSE);

Eingetragen von Kreba (88)
am 03.11.2007 - 22:38 Uhr

OK, gleich in der ersten Funktion wird $node->teaser festgelegt

function theme_calendar_calendar_node($node, $type) {
   // Display the regular teaser view for local events.
   if (!$node->remote && $type == 'calendar_node_day') {
     $node = node_load($node->nid);
     $node->teaser = node_view($node, TRUE, FALSE);
     $node->title = '';
   }
   // For other views, construct a teaser out of the provided fields.
   else {...

in der Zeile $node->teaser = node_view($node, TRUE, FALSE); wird eine Funktion aufgerufen, die leider nicht in der Datei calendar.theme enthalten ist. Die Suche kann also weiter gehen ;)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: in der Zeile

Eingetragen von quiptime (4972)
am 04.11.2007 - 00:23 Uhr
Zitat:

in der Zeile $node->teaser = node_view($node, TRUE, FALSE); wird eine Funktion aufgerufen, die leider nicht in der Datei calendar.theme enthalten ist. Die Suche kann also weiter gehen

Guckst Du:

http://api.drupal.org/api/function/node_view/5

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: wohin aber

Eingetragen von quiptime (4972)
am 04.11.2007 - 00:25 Uhr
Zitat:

wohin aber check_markup($node->teaser) verweist habe ich noch nicht raus.

Guckst Du:

http://api.drupal.org/api/function/check_markup/5

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das heißt dann aber jetzt

Eingetragen von Kreba (88)
am 04.11.2007 - 09:19 Uhr

Das heißt dann aber jetzt für mich, dass ich mir in der Funktion theme_calendar_calendar_node($node, $type) eine eigene Routine schreiben muss, die mir die Ausgabe so wie ich sie will zusammenstellt. Da sich die Funktion bisher bei anderen Modulen bedient, die ich nicht verändern möchte, da ich nicht weiß was dann wo anders passiert. Oder gibt es jetzt mit der Erkenntnis, dass sich das Calendar-Modul bei den anderen Modulen bedient doch noch eine Möglichkeit über Einstellungen etwas zu verändern?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Deine Fruehstuecksbroetchen

Eingetragen von quiptime (4972)
am 04.11.2007 - 09:52 Uhr

Deine Fruehstuecksbroetchen kannst Du doch auch kaufen wo Du willst. Oder Du taust welche aus dem Frost auf.

So ist es auch bei der/einer theme Funktion. Wenn diese an einer Stelle eine bestimmte Funtionalitaet mittels einer anderen Funktion aus einem anderen Modul realisiert dann kannst Du das in Deinem selbst erstellten Template veraendern.
Du kannst diesen Aufruf anderer Module so aendern wie Du moechtest. Kannst dabei auch auf das Ansprechen anderer Module voellig verzichten und eigenen PHP-Code implementieren wie Du willst.
Damit Du nun nicht eigene PHP-Funktionalitaeten entwickeln musst bietet es sich aber an, auf Drupal zurueckzugreifen. Man muss ja das Fahrad kein zweites Mal erfinden. Oft sind Funktionalitaeten zur Realisierung bestimmter Dinge, in anderen Modulen eben, schon vorhanden.

http://api.drupal.org

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

quiptime wrote: Damit Du

Eingetragen von Kreba (88)
am 04.11.2007 - 10:35 Uhr
quiptime schrieb

Damit Du nun nicht eigene PHP-Funktionalitaeten entwickeln musst bietet es sich aber an, auf Drupal zurueckzugreifen. Man muss ja das Fahrad kein zweites Mal erfinden. Oft sind Funktionalitaeten zur Realisierung bestimmter Dinge, in anderen Modulen eben, schon vorhanden.

Genau deshalb frag ich hier doch, weil ich diese andere Module bzw. Möglichkeiten noch nicht kenne.

  • Anmelden oder Registrieren um Kommentare zu schreiben

ich habe das Problem jetzt

Eingetragen von Kreba (88)
am 06.11.2007 - 12:55 Uhr

ich habe das Problem jetzt für mich in der Weise gelöst, indem ich jetzt die dev-Version des Calendar-Modules verwende. ich habe immer noch keinen Weg gefunden, wie ich aus der Template-Datei heraus den Inhalt der Tagesansicht bestimmen kann bzw. wie ich einzelne Felder meines Nodes, das ich anzeigen will anspreche. So wie es mit der dev-Version angezeigt wird ist aber akzeptabel und damit auch OK.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: wie ich aus der

Eingetragen von quiptime (4972)
am 06.11.2007 - 13:03 Uhr
Zitat:

wie ich aus der Template-Datei heraus den Inhalt der Tagesansicht bestimmen kann bzw. wie ich einzelne Felder meines Nodes, das ich anzeigen will anspreche

Was soll denn in der Tagesansich nicht angezeigt werden?

Poste bitte den Link der Tagesansicht.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

der Link ist

Eingetragen von Kreba (88)
am 06.11.2007 - 13:12 Uhr

der Link ist http://aktiv.jh-skunk.de/calendar/2007/11/8

Mir würde der Titel, die Uhrzeit des aktuellen Termins so wie in der Monatsansicht, der Veranstaltungsort und der Anrisstext reichen.

Die weiteren Termine, das Datum und der Link sind überflüssig.

mein ursprüngliches Problem war aber, dass die Anzeige bei der ursprünglichen Calendar-Version nicht Formatiert war. Da sah es so aus:

Datum: 25.10.2007 - 19:0008.11.2007 - 19:0029.11.2007 - 19:0013.12.2007 - 19:00Veranstaltungsort: Jugendhaus Hochdorf SKUNK
Der Hardrock-Cafe-Abend im Jugendhaus. Marcel Ruppert legt zweimal im Monat, immer am zweiten und am letzten Donnerstag von 19 bis 21 Uhr Rockmusik auf. Es soll ein Querschnitt durch die Vielfalt der Rockmusik laufen. Von Hard and Heavy bis zur Rockballade. Tendenz eher etwas härter. Freunde der Rockmusik sind eingeladen an diesen Abenden ins Jugendhaus zu kommen - Hip-Hop läuft wann anders - versprochen! :-)
Link zur Veranstaltung:
hier klicken

Und das hat mir, denk ich mal, zurecht nicht gefallen. Deshalb hatte ich einen Weg gesucht, die felder, die ich nicht wollte rauszufiltern. So wie es jetzt mit der dev-Version angezeigt wird, ist aber auch OK.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ok, ich glaube Du machst es

Eingetragen von quiptime (4972)
am 06.11.2007 - 13:42 Uhr

Ok, ich glaube Du machst es Dir schwerer als es ist.

Die Loesung Deines Problemes wurde hier bereits gepostet.

Wenn Du in einem Template irgendwelche Funktionen aufrufst um im Template etwas bestimmtes auszugeben, dann wird durch diesen Aufruf an keiner anderen Stelle etwas veraendert. Siehe Deine Post's:

Zitat:

Ich habe die Ausgabe auf diese Zeile eingegrenzt:

$output .= '

'. check_markup($node->teaser) ."

\n";

wohin aber check_markup($node->teaser) verweist habe ich noch nicht raus.

und

Zitat:

OK, gleich in der ersten Funktion wird $node->teaser festgelegt
function theme_calendar_calendar_node($node, $type) {
// Display the regular teaser view for local events.
if (!$node->remote && $type == 'calendar_node_day') {
$node = node_load($node->nid);
$node->teaser = node_view($node, TRUE, FALSE);
$node->title = '';
}
// For other views, construct a teaser out of the provided fields.
else {...

in der Zeile $node->teaser = node_view($node, TRUE, FALSE); wird eine Funktion aufgerufen, die leider nicht in der Datei calendar.theme enthalten ist. Die Suche kann also weiter gehen ;)

Mir scheint, Du hast mit die Logik der Templateverwendung noch nicht ganz verstanden.

Wenn der Code der function theme_calendar_node_day($node) den Inhalt der Tagesansich ausgibt dann ist das auch der Ausgangspunkt fuer den Inhalt der Template-Datei "calendar_node_day.tpl.php".
Wenn Du nun bei diesem Code in der Template-Datei bestimmte Teile weglaesst und damit bestimmte Teile nicht ausgegeben werden ist das ok. Im Template ist es egal, welche Drupaleigenen Funktionen aufgerufen werden. Der Aufruf dieser Funktionen im Template-Code entspricht dem Sinn der Anwendung dieser Funktionen - dazu sind diese Funktionen ja auch da.

Einzig etwas "knifflig" ist beim Falle sich wiederholender Termine die Beschraenkung des Datums nur auf das aktuelle Datum. Hier kann man keine Funktion aufrufen um die Anzeige mehrerer Termine auf nur einen Termin zu beschraenken. Um dies zu erreichen muss man mit eigener Programmlogik (PHP programmieren) aus allen Terminen den Termin des aktuellen Datums herausloesen.

Anders wird es nicht gehen. Ich weiss nicht was Du erwartet hast bzw. Du glaubst das es funktionieren soll. Templates erstellen heisst eben oft selbst programmieren. Das ist eines der Prinzipien von Drupal.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

quiptime wrote: Wenn der

Eingetragen von Kreba (88)
am 06.11.2007 - 14:23 Uhr
quiptime schrieb

Wenn der Code der function theme_calendar_node_day($node) den Inhalt der Tagesansich ausgibt dann ist das auch der Ausgangspunkt fuer den Inhalt der Template-Datei "calendar_node_day.tpl.php".
Wenn Du nun bei diesem Code in der Template-Datei bestimmte Teile weglaesst und damit bestimmte Teile nicht ausgegeben werden ist das ok. Im Template ist es egal, welche Drupaleigenen Funktionen aufgerufen werden. Der Aufruf dieser Funktionen im Template-Code entspricht dem Sinn der Anwendung dieser Funktionen - dazu sind diese Funktionen ja auch da.

ich habe schon versucht über div. Funktionen die ich gefunden hab den Inhalt zu verändern. Ich habe eben immer noch nicht die Richte Funktion gefunden. Ich hab nach einer Funktion gesucht, der ich sagen kann, gib mir den Inhalt von dem Feld X im Node Y.

quiptime schrieb

Einzig etwas "knifflig" ist beim Falle sich wiederholender Termine die Beschraenkung des Datums nur auf das aktuelle Datum. Hier kann man keine Funktion aufrufen um die Anzeige mehrerer Termine auf nur einen Termin zu beschraenken. Um dies zu erreichen muss man mit eigener Programmlogik (PHP programmieren) aus allen Terminen den Termin des aktuellen Datums herausloesen.

Was ich dabei nicht verstehe ist, warum das bei der Monatsansicht klappt. Da wird nur die jeweils richtige Uhrzeit angezeigt und nur die Uhrzeit. Ich hab mir den Quelltext angeschaut, bin aber noch nicht schlau daraus geworden.

quiptime schrieb

Anders wird es nicht gehen. Ich weiss nicht was Du erwartet hast bzw. Du glaubst das es funktionieren soll. Templates erstellen heisst eben oft selbst programmieren. Das ist eines der Prinzipien von Drupal.

Ich erwarte nichts anderes. Klar will und werde ich noch selber programmieren. Aber zunächst muss ich doch die Anknüpfpunkte finden. Wie spreche ich welches Feld in einem Node an. Wenn ich das weis, dann ist der Rest kein Problem mehr. Bisher habe ich aber nur eine Funktion gefunden, die mir einen ganzen Node liefert.

Aber wie gesagt, es ist gerade nicht mehr meine Hauptbaustelle, da ich mit der jetzigen Lösung auch leben kann. Vielleicht löse ich es ja später mal wenn ich mehr durchblick habe und denke dann, ach wie einfach. Ich habe diesen Thread nur wieder aufgegriffen um anderen Hilfesuchenden mitzuteilen, dass es sich lohnen kann die dev-Version anzuschauen.

Natürlich, wenn ich noch einen Hinweis bekomme, der mir weiterhilft, dann freut mich das auch.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • D 7.78 und eine sqlite Datenbank statt mySQL
  • Versenden von Anfragen per Webform
  • eMail-Adresse überprüfen ob diese auch tatsächlich existiert
  • [gelöst]Welche Tokens werden bei Images im Feld Dateiverzeichnis erlaubt
  • Modulupdate per Webinterace scheitert an authorize.php und access denied für Admin-User
  • Fehlermeldung nach Update auf PHP 7.4 - array offset on value of type null in geocoder_widget...
  • BEF Exposed Filter collapse funktioniert nicht mit Bootstrap Theme
  • content und media-files von drupal8 nach drupal9 migrieren
  • Notificationsnicht immer und gesammelt bei Update
  • Meldung zu Token im Statusbericht
  • Fehlermeldung: Deprecated function
  • Warning: call_user_func() expects parameter 1 to be a valid callback, class 'Drupal\node\Entity\Node' does not have a method 'ge
Weiter

Neue Kommentare

  • bei den meisten Hostern
    vor 5 Stunden 40 Minuten
  • wirklich sicherstellen kann man es nur,
    vor 5 Stunden 44 Minuten
  • Moin Moin vielen lieben Dank
    vor 11 Stunden 22 Minuten
  • Auch,wenn es noch über
    vor 16 Stunden 5 Minuten
  • Das steht über dem Bereich,
    vor 16 Stunden 8 Minuten
  • Hallo Jenna, ich habe das
    vor 1 Tag 12 Stunden
  • Ich hatte gehofft, bis auf
    vor 1 Tag 12 Stunden
  • Wenn der Provider keine freie
    vor 1 Tag 13 Stunden
  • Problemeingrenzung
    vor 1 Tag 14 Stunden
  • Ich habe es bei einigen
    vor 2 Tagen 16 Stunden

Statistik

Beiträge im Forum: 245991
Registrierte User: 18832

Neue User:

  • finnster
  • Damian1802
  • MrWebMV

» Alle User anzeigen

User nach Punkten sortiert:
wla9012
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3916
ronald3831
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 5 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