MyBB.de Forum

Normale Version: Im Kalender bei Geburtstagen die Namen anzeigen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Hallo

Ich wollte mal fragen wie ich meine Templates ändern muss um bei den Kalendereinträgen nicht "1 Geburtstag" anzuzeigen sondern die Namen der Geburtstagskinder und deren Alter

Frank
Die Templates zu ändern wird nicht reichen, die Daten müssen ja auch aus der Datenbank bezogen werden. Ein Mod dazu ist mir derzeit nicht bekannt.

Das Thema hatten wir hier schonmal.
Ok aber die Abfrage müsste es ja schon geben, da ich ja wenn ich den Link 1 Gebusrttag anklicke eine Liste mit den Geburtstagskindern bekomm. Das heißt ich müsste diese Abfrage in das tamplate einbauen.
Des wäre ja Kalender Templates -> ...daybit (oder so ähnlich hab das vorhin versucht aber jetzt ist grad meine Datenbank down und ich kanns nicht nochmal überprüfen). Und es müsste die gleiche abfrage gestartet werden wie in calendar_..._birthday (?). Und wenn ich des hinkrieg dann müsste des doch funktionieren.
Allerdings bin ich noch n PHP und MySQL-Anfänger...

[edit]Irgendwie hat des doch mit $birthdays zu tun...
Also ich hab jetzt noch mal nachgeschaut:

Es steht in der Kalender Templates -> calendar_daybit und der Zugriff heißt $birthdays.
Jetzt müsste ich entweder den Zugriff aus der calendar_dayview_birthdays nehmen (wenn das möglich ist, da es ebenfalls $birthdays ist) oder ich müsste diesen Template in leicht abgewandelter Form in die calendar_daybit einbinden.
Wäre das möglich?

[edit]Oder muss ich des direkt in der calendar.php ändern?
Code:
$query = $db->query("SELECT u.uid, u.username, u.birthday, u.usergroup, u.displaygroup FROM ".TABLE_PREFIX."users u WHERE u.birthday LIKE '$day-$month-%'");
    $alterbg = $theme['trow1'];
    $comma = "";
    while($bdays = $db->fetch_array($query))
    {
        $bday = explode("-", $bdays['birthday']);
        if($bday[2] && $bday[2] < $year)
        {
            $age = $year - $bday[2];
            $age = " ($age $lang->years_old)";
        }
        else
        {
            $age = "";
        }
        $bdays['username'] = formatname($bdays['username'], $bdays['usergroup'], $bdays['displaygroup']);
        eval("\$birthdays .= \"".$templates->get("calendar_dayview_birthdays_bday", 1, 0)."\";");

        if($alterbg == $theme['trow1'])
        {
            $alterbg = $theme['trow2'];
        }
        else
        {
            $alterbg = $theme['trow1'];
        }
        $comma = ", ";
    }
Das müsste doch, an der richtigen stelle angebracht, den gewünschten Effekt bringen? Wenn ja wo müsste das denn hin?

P.S.: Ich hatte den anderen Thread schon mal gelesen aber ich hab ihn nicht wiedergefunden deswegen hab ich nen neuen aufgemacht. Sorry.
Als Denkanstoß:

Der von dir genannte Code gibt die Geburtstage für einen bestimmten Tag aus, da der Code für die Detailansicht verwendet wird.

Den Code für die Anzeige des Kalenders findest du in der Datei calendar.php ab Zeile 399, also ab
PHP-Code:
$plugins->run_hooks("calendar_start"); 
bis zum Ende der Datei. Das einfache Einfügen des von dir genannten Codes wird nichts bringen, da hier nur nach den Benutzernamen für einen bestimmten Tag gesucht wird. Es müssen also alle Geburtstage eines Monats ermittelt werden, diese müssen dann den Tagen und den Benutzernamen zugeordnet werden.
Ok ich hab jetzt in Zeile 443 das
PHP-Code:
for($i 1$i <= $days$i++)
    {
        if(
$bdays[$i])
        {
if(
$bdays[$i] > 1)
            {
                
$birthdays "<a href=\"calendar.php?action=dayview&year=$year&month=$month&day=$i\">$bdays[$i] $lang->birthdays</a><br />\n";
            }
            else
            {
                
$birthdays "<a href=\"calendar.php?action=dayview&year=$year&month=$month&day=$i\">$bdays[$i] $lang->birthday</a><br />\n";
            } 
ersetzt durch
PHP-Code:
for($i 1$i <= $days$i++)
    {
        if(
$bdays[$i])
        {
$day $i;
            
$query $db->query("SELECT u.uid, u.username, u.birthday, u.usergroup, u.displaygroup FROM ".TABLE_PREFIX."users u WHERE u.birthday LIKE '$day-$month-%'");
            
$comma "";
            while(
$bdays $db->fetch_array($query))
            {
                
$bday explode("-"$bdays['birthday']);
                if(
$bday[2] && $bday[2] < $year)
                {
                    
$age $year $bday[2];
                    
$age " ($age)";
                }
                else
                {
                    
$age "";
                }
                
$bdays['username'] = formatname($bdays['username'], $bdays['usergroup'], $bdays['displaygroup']);
                eval(
"\$birthdays .= \"".$templates->get("calendar_dayview_birthdays_bday"10)."\";");
                
$comma "<br/>";
            } 
Aber damit bekomm ich nur den ersten Tag eines Monats...
obwohl die For-Schleife des $i hochzählt.
Ok hat sich erledigt ich musste nur n bisschen was an den Variablen ändern und n eigenes Template hinzufügen dann gings.

Danke für den Denkansatz.

Ergebnis (ab Zeile 443 in calendar.php):
PHP-Code:
for($i 1$i <= $days$i++)
    {
        if(
$bdays[$i])
        {
            
$birthdays "";
            
$query $db->query("SELECT u.uid, u.username, u.birthday, u.usergroup, u.displaygroup FROM ".TABLE_PREFIX."users u WHERE u.birthday LIKE '$i-$month-%'");
            while(
$bidays $db->fetch_array($query))
            {
                
$biday explode("-"$bidays['birthday']);
                if(
$biday[2] && $biday[2] < $year)
                {
                    
$age $year $biday[2];
                    
$age " ($age)";
                }
                else
                {
                    
$age "";
                }
                
$bidays['username'] = formatname($bidays['username'], $bidays['usergroup'], $bidays['displaygroup']);
                eval(
"\$birthdays .= \"".$templates->get("calendar_daybit_birthdays_bday"10)."\";");
            }
        } 

Und n Template calendar_daybit_birthdays_bday mit dem Inhalt:
Code:
<a href="member.php?action=profile&amp;uid=$bidays[uid]"><strong>$bidays[username]</strong></a>$age<br/>
Jetzt müsst ich das nur noch als plug-in oder so schreiben weil sonst ist das ganze beim nächsten Update ja möglicherweise weg, oder?
Wie mach ich das am besten?
Es kann unter Umständen passieren, dass die Änderungen bei einem Update verloren gehen. Entweder schreibst du dir die Änderungen auf oder du machst ein Plugin daraus. Dazu guckst du dir am besten ein vorhandenes Plugin an damit du weißt wie es aufgebaut ist.

Weitere Informationen dazu:
https://www.mybb.de/forum/showthread.php?tid=385
https://www.mybb.de/forum/showthread.php?tid=253
Danke.

Noch ne Frage: Ich hab ein eigenes Profil-Feld erstellt das "Vollständiger Name" heißt. Wenn ich dieses auch in den Kalender einfügen will wie kann ich darauf zugreifen? D.h. unter welcher "variable" und welche Einbindung brauch ich dafür?
Seiten: 1 2 3 4