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

Calendar - PHP-Code für Title + Breadcrumbs

Eingetragen von mauk (78)
am 07.09.2009 - 22:17 Uhr in
  • Module
  • Drupal 5.x

Hallo,

ich möchte gerne das Calendar-Modul ändern, komme aber leider mit dem php-code nicht zurecht.

Es geht um diese Code-Passage:

      $view->year = $value;
  return $view->year;
case 'MONTH':
  return t('Veranstaltungen im Monat @month', array('@month' => date_format_date($view->min_date, 'F Y')))

Es soll das Jahr- und die Monatsausgabe geändert werden.

Bei dem Jahr komme ich überhaupt nicht weiter und bei der Monatsausgabe erscheint

Veranstaltungen im Monat Die, 01/09/2009 - 00:00
soll aber sein Veranstaltungen im Monat September 2009

Beim Jahr entsprechend Veranstaltungen im Jahr 2009

etc.

Kann da jemand helfen?

Gruß
mauk

‹ Ecard Thickbox, Angaben unter dem Bild ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Kann mir hier jemand

Eingetragen von mauk (78)
am 08.09.2009 - 22:56 Uhr

Kann mir hier jemand helfen??

:o
mauk

Das freut die iPhone-Fans: iPhone News.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Modulausgabe

Eingetragen von stBorchert (6003)
am 09.09.2009 - 08:24 Uhr
mauk schrieb

ich möchte gerne das Calendar-Modul ändern

Solltest Du einen Fehler gefunden haben oder eine Funktionalität zum Modul hinzufügen wollen, empfiehlt sich die Issue-Queue von Calendar (und evtl. auch Creating patches).

Ich gehe jedoch mal aufgrund Deiner nachfolgenden Sätze davon aus, dass Du mit einer speziellen Ausgabe des Moduls unzufrieden bist und diese gerne anpassen möchtest. Dazu ist keine Änderung am Modulcode nötig sondern nur eine Anpassung der Ausgabe.

mauk schrieb

Es geht um diese Code-Passage: ...

Leider schreibst Du nicht, in welcher Datei diese Zeilen stehen (verwendest Du wirklich Drupal 5?).

mauk schrieb

  $view->year = $value;
  return $view->year;
case 'MONTH':
  return t('Veranstaltungen im Monat @month', array('@month' => date_format_date($view->min_date, 'F Y')))

Ich bin mir 100%ig sicher, dass es diese Zeilen so definitiv nicht im Modul gibt. Standardsprache in Drupal ist englisch.
Sofern die Ausgabe über die Funktion t() erfolgt, kannst Du sie ganz einfach über die Oberfläche übersetzen und dabei anpassen (den Text, nicht das Datumsformat). Das Format des Datums sollte laut Dokumentation korrekt als Monatsname + Jahr ausgegeben werden.

Schreib mal bitte, in welcher Datei das steht, dann kann man da evtl. weiterhelfen. Ansonsten wird das äusserst schwierig.

hth,

 Stefan

--
sei nett zu Deinem Themer

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Stefan, vielen Dank

Eingetragen von mauk (78)
am 09.09.2009 - 19:29 Uhr

Hallo Stefan,

vielen Dank für Deine Antwort. Ja, ich bin mir sicher, dass ich Drupal 5 verwende.

Die Codepassage ist aus der Datei calendar.theme (ab Zeile 228). Der Originalcode ist:

/**
* Theme the calendar title and breadcrumbs
*   Arguments are evaluated in year, month, day or year, week order
*   so you can track previous values in the session.
*
* @param string $field_type - 'YEAR', 'MONTH', 'DAY', 'WEEK'
* @param integer $value - the current number for the field type as selected in the view argument.
* @return string formatted title
*/
function theme_calendar_arg_title($field_type, $value, $query) {
  $value = intval(check_plain($value));
  if (empty($value)) {
    return '';
}
else {
  $view = $GLOBALS['current_view'];
    switch (strtoupper($field_type)) {
    case 'YEAR':
      $view->year = $value;
      return $view->year;
    case 'MONTH':
      return date_format_date($view->min_date, 'custom', 'F');
    case 'DAY':
      return date_format_date($view->min_date, 'custom', 'l, F j Y');
    case 'WEEK':
    return t('Week of @date', array('@date' => date_format($view->min_date, 'F j')));
   }
}
return $value;
}

daraus habe ich bisher gemacht:

/**
* Theme the calendar title and breadcrumbs
*   Arguments are evaluated in year, month, day or year, week order
*   so you can track previous values in the session.
*
* @param string $field_type - 'YEAR', 'MONTH', 'DAY', 'WEEK'
* @param integer $value - the current number for the field type as selected in the view argument.
* @return string formatted title
*/
function theme_calendar_arg_title($field_type, $value, $query) {
  $value = intval(check_plain($value));
  if (empty($value)) {
    return '';
}
else {
  $view = $GLOBALS['current_view'];
    switch (strtoupper($field_type)) {
    case 'YEAR':
      $view->year = $value;
  return $view->year;
case 'MONTH':
  return t('Veranstaltungen im Monat @month', array('@month' => date_format_date($view->min_date, 'F Y')));
    case 'DAY':
return t('Veranstaltungen am @day', array('@day' => date_format_date($view->min_date, 'custom', 'l, j. F Y')));
    case 'WEEK':
    return t('Veranstaltungen in Woche ab @date', array('@date' => date_format($view->min_date, 'j. F Y')));
   }
}
return $value;
}

Tages- und Wochenausgabe funktionieren so wie sie es sollen. Nur beim Monat und Jahr leider nicht.

Es wäre schön, wenn mir jemand helfen könnte.

:o
mauk

Das freut die iPhone-Fans: iPhone News.

  • Anmelden oder Registrieren um Kommentare zu schreiben

theme-Funktionen

Eingetragen von stBorchert (6003)
am 09.09.2009 - 22:47 Uhr

Da das innerhalb einer theme-Funktion steht, kannst Du das ganz einfach in der template.php Deines Themes überschreiben.
Dazu kopierst Du einfach die komplette Funktion in die template.php Deines Themes (z.B. "garland") und nennst die kopierte Funktion dann garland_calendar_arg_title (wenn Dein Theme anders heisst, ersetzt Du "garland" im Funktionsnamen durch den entsprechenden Namen).
Dann kannst Du in dieser Funktion alle Deine gewünschten Änderungen vornehmen (und nachdem Du den Theme-Cache geleert hast, werden die Änderungen auch angezeigt).

hth,

 Stefan

--
sei nett zu Deinem Themer

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Stefan, die

Eingetragen von mauk (78)
am 09.09.2009 - 23:10 Uhr

Hallo Stefan,

die Änderungen, die ich bisher gemacht habe, funktionieren auch ohne, das ich sie in die template.php kopiere. Vielleicht liest Du nochmals mein Ursprungpost.

:o
Bernt

Das freut die iPhone-Fans: iPhone News.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Geht, aber anders ist es richtiger

Eingetragen von Nicolai Schwarz (1071)
am 10.09.2009 - 00:26 Uhr

mauk, natürlich kannst du den Original-Code überschreiben.

Was Stefan meint ist: So sollte man es nicht machen. Der richtige Weg ist die Funktion im eigenen template.php zu überschreiben. Das ist unabhängig von deinem Problem, einfach nur die richtige Herangehensweise. (wg. Update der Module)

Was dein Problem angeht, kann ich leider auch nicht weiterhelfen. Ich hätte gedacht, dass man so etwas einfacher einstellen kann und keinen eigenen Code dafür schreiben muss. Reicht es nicht, die Drupal-internen Formate fürs Datum richtig einzustellen?

--
textformer mediendesign | Webkrauts

  • Anmelden oder Registrieren um Kommentare zu schreiben

Funktionsaufruf

Eingetragen von stBorchert (6003)
am 10.09.2009 - 07:55 Uhr

Wenn Du meine Antwort und die darin verlinkten Artikel gelesen hättest, würdest Du den Modulquellcode nicht überschreiben, sondern den vorgeschriebenen Weg eingehen.

Des Weiteren solltest Du die Funktion date_format_date auch richtig aufrufen.
<?php date_format_date($view->min_date, 'F Y') ?> kann kein richtiges Ergebnis liefern, da der zweite Parameter den verwendeten Format-Typen bestimmt ('small', 'medium', 'large' oder 'custom'). Du übergibst da jedoch die Formatierungsanweisung.

Und wie bereits vorab erwähnt: Standardsprache innerhalb von Drupal ist Englisch. Aufrufe wie <?php t('Veranstaltungen im Monat @month', ...); ?> sind schlicht und ergreifend falsch.
Sämtliche Texte innerhalb von t() sind in englischer Sprache zu schreiben und werden über die Oberfläche übersetzt.

hth,

 Stefan

--
sei nett zu Deinem Themer

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Stefan, nichts für

Eingetragen von mauk (78)
am 10.09.2009 - 10:29 Uhr

Hallo Stefan,

nichts für Ungut. Dein beschriebener Weg mag richtig sein, aber für mich als "normalen" Anwender erscheint mein Weg passender. Ich erstelle diese Seite für meine Zwecke. Die Übersetzungssuche liefert mir häufig viele unklare Suchergebnisse und darum ändere ich darüber ungern etwas.

Ich bin kein PHP-Freak. Was meinst Du hier mit dem zweiten Parameter? F steht für Monat und Y für Jahr.

Zitat:

<?php
date_format_date
($view->min_date, 'F Y')
?>
kann kein richtiges Ergebnis liefern, da der zweite Parameter den verwendeten Format-Typen bestimmt ('small', 'medium', 'large' oder 'custom').

Auch wenn es jetzt nicht den Drupal-Richtlinien entspricht. Ich habe die Konstante in deutsch direkt in den PHP-Code geschrieben
und für die Monatsausgabe jetzt so gelöst:


case 'MONTH':
  return t('Veranstaltungen im Monat @month', array('@month' => date_format($view->min_date,'F Y')));

Leider fehlt mir jetzt noch die Ausgabe für das Jahr.

:o
Bernt

Das freut die iPhone-Fans: iPhone News.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Regeln

Eingetragen von stBorchert (6003)
am 10.09.2009 - 10:39 Uhr
mauk schrieb

Dein beschriebener Weg mag richtig sein

Er mag nicht nur richtig sein, er ist es sogar.

mauk schrieb

, aber für mich als "normalen" Anwender erscheint mein Weg passender.

Der Schein trügt leider viel zu oft.

mauk schrieb

Ich erstelle diese Seite für meine Zwecke.

Wenn Du für Dich selbst schon nicht sauber und nach den bestehenden Regeln von Drupal arbeitest, was machst Du dann, wenn Du mal etwas für Andere tun möchtest?
Fang lieber gleich an, die Coding-Guidelines richtig umzusetzen, dann wirst Du in Deinem späteren Drupal-leben weniger Probleme haben.

mauk schrieb

Die Übersetzungssuche liefert mir häufig viele unklare Suchergebnisse und darum ändere ich darüber ungern etwas.

Die obigen Texte sind eigentlich relativ eindeutig und daher auch gut zu übersetzen.

mauk schrieb

Ich bin kein PHP-Freak. Was meinst Du hier mit dem zweiten Parameter? F steht für Monat und Y für Jahr.

Du übergibst der Funktion 2 Parameter. Sie benötigt jedoch 3, wobei der 2. 'custom' sein sollte.

mauk schrieb

Auch wenn es jetzt nicht den Drupal-Richtlinien entspricht. Ich habe die Konstante in deutsch direkt in den PHP-Code geschrieben und für die Monatsausgabe jetzt so gelöst: ...

Damit werden Dir jedoch nicht die Tage und Monatsnamen übersetzt.
Warum verwendest Du die Funktion nicht einfach so, wie im Original beschrieben?
<?php date_format_date($view->min_date, 'custom', 'F') ?> funktioniert wunderbar.

 Stefan

--
sei nett zu Deinem Themer

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: <?php

Eingetragen von mauk (78)
am 10.09.2009 - 10:59 Uhr
Zitat:

<?php
date_format_date
($view->min_date, 'custom', 'F')
?>
funktioniert wunderbar.

Ja, das habe ich auch gar nicht bestritten, aber die Ausgabe sowohl im Title-, H1-Tag als auch eigentlich der URL ist sehr dürfig, nämlich z.B. September 2009 oder in der URL 2009/09. Das sieht nicht so suchmaschinenfreundlich aus und finde ich für den User auch nicht sonderlich ansprechend, daher meine ergänzenden Angaben.

Wenn jetzt noch jemand mir etwas zur Jahresausgabe sagen könnte, wäre ich glücklich.

:o
mauk

Das freut die iPhone-Fans: iPhone News.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ausgabe

Eingetragen von stBorchert (6003)
am 10.09.2009 - 11:11 Uhr

Was hindert Dich daran, einfach statt

<?php
 
return $view->year;
?>

Folgendes zu schreiben:

<?php
 
return t('Events in @year', array('@year' => $value));
?>
?

 Stefan

--
sei nett zu Deinem Themer

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

stBorchert schrieb Was

Eingetragen von mauk (78)
am 10.09.2009 - 11:17 Uhr
stBorchert schrieb

Was hindert Dich daran, einfach statt

Meine Unwissenheit. Vielen Dank für Deine Geduld!!

Gruß aus Hamburg
Bernt

Das freut die iPhone-Fans: iPhone News.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ausgabe leider in englisch

Eingetragen von mauk (78)
am 13.09.2009 - 23:35 Uhr

Ich habe doch noch eine Frage. Die Ausgabe des Monats erfolgt jetzt im Title und H1 Tag in englisch. Über die Lokalisierung lässt sich das leider nicht ändern.

Wie könnte man das lösen?

:o
mauk

Das freut die iPhone-Fans: iPhone News.

  • Anmelden oder Registrieren um Kommentare zu schreiben

date_format_date

Eingetragen von stBorchert (6003)
am 14.09.2009 - 07:47 Uhr

Du verwendest die Funktion date_format zur Ausgabe des Monats. Mit dieser werden keine Übersetzungen berücksichtigt.
Verwende stattdessen date_format_date (wie auch bei den anderen Ausgaben), dann werden die Monatsnamen auch übersetzt ausgegeben.

hth,

 Stefan

--
sei nett zu Deinem Themer

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du bist super. Mit dem

Eingetragen von mauk (78)
am 14.09.2009 - 09:51 Uhr

Du bist super. Mit dem richtigen Format hat es dann auch geklappt. Fällt Dir zu diesem Problem eventuell auch noch etwas ein:

http://www.drupalcenter.de/node/21378

:o
Bernt

Das freut die iPhone-Fans: iPhone News.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • PHP 8.1 - Deprecated function: rtrim()
  • Preloader / Spnner entfernen Menu Link Modal-Modul
  • Schriftgröße standard einstellen
  • Drupal Website gestalten
  • MariaDB 10.6
  • Entity Reference - Title Felder werden als Link angezeigt
  • Tokens werden in Viev als Link angezeigt
  • [bug entdeckt & workaround gefunden] benutzerdefinierte Felder vom Userprofil tauchen ungefragt auch in den Forumtopics auf...
  • [gelöst] Mass contact Empfängerliste nach Taxonomy Term statt Rolle
  • Update V. 9.3.12 auf V. 9.4 mit Fehler: Modul mySQL fehlt. Bitte Hilfe.
  • Sprachpfad, in Drupal Korrekt einstellen, auch bei den Meta-Tags
  • Update von Drupal 9.3 auf 9.4 oder bei 9.3 bleiben
Weiter

Neue Kommentare

  • Danke fürs Feedback. Gut dass
    vor 6 Stunden 58 Minuten
  • Patch angewandt
    vor 10 Stunden 10 Minuten
  • core_version_requirement: ^8
    vor 2 Tagen 11 Stunden
  • core_version_requirement: ^8
    vor 2 Tagen 11 Stunden
  • ok. Wenn ich das mache
    vor 2 Tagen 11 Stunden
  • Bei gleichem Namen hat das
    vor 2 Tagen 12 Stunden
  • Sorry, dass ich mich hier
    vor 2 Tagen 12 Stunden
  • Habe Patch versucht
    vor 2 Tagen 19 Stunden
  • Hier wird ein Patsch
    vor 2 Tagen 21 Stunden
  • Mit Drupal geht das um 150
    vor 3 Tagen 8 Stunden

Statistik

Beiträge im Forum: 247866
Registrierte User: 19592

Neue User:

  • Davidsnins
  • kudes
  • Tkakah

» Alle User anzeigen

User nach Punkten sortiert:
wla9213
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3845
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 2 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