Shoutbox
am 22.09.2008 - 09:44 Uhr in
Hallo Drupalgemeinde! :)
Ich bin schon länger auf der Suche nach einem ganz einafchen schlichten Shoutbox Modul, bisher leider erfolglos. Das "normale" Module das auf drupal.org zu finden ist entspricht leider nicht meinen Vorstellungen.
Was ich suche ist wirklich komplett anspruchslos. JEDER Besucher soll einen einfachen Eintrag (Name, evtl. Website, Message) hinterlassen können. JEDER soll alles sehen können. Und halt der Admin soll Einträge löschen können. Was ich mir aber wünschen würde ist, dass sich das Design ganz einfach an das verwendete Theme anpassen lassen soll - also nicht wie beim bestehenden "Shoutbox" Modul von drupal.org .... oder ist das dort auch möglich und finde ich einfach nicht den Weg dahin? Was mich besonders stört, ist das z.B. wenn sich die Shoutbox in einer etwas schmaleren Sidebar befinden, als eine Art iframe eingeblendet wird. Also mit Scrollbars ver/hor... gefällt mir überhaupt nicht ;) ... und leider habe ich auch eben noch keine Möglichkeit gefunden das Design/Layout anzupassen, ansonsten wäre ich mit diesem Modul ja auch zufrieden ;)
Kennt da jemand etwas, oder kann mir bei meinem "Problem" weiterhelfen?
lg, Christof
- Anmelden oder Registrieren um Kommentare zu schreiben
Besten Dank an alle, falls
am 22.09.2008 - 10:51 Uhr
Besten Dank an alle, falls sich noch jemand "um mich kümmern" wollte ;) ... Aber ich habe mir inzwischen doch noch selber helfen können, und Wege gefunden das drupal.org Shoutbox Modul anzupassen.
Es ist nett wenn Du Deine gefundene Loesung hier postest.
am 22.09.2008 - 10:59 Uhr
mir inzwischen doch noch selber helfen können, und Wege gefunden das drupal.org Shoutbox Modul anzupassen.
Es ist nett wenn Du Deine gefundene Loesung hier postest. Bitte.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Natürlich, bin nur noch
am 22.09.2008 - 13:00 Uhr
Natürlich, bin nur noch nicht zu 100% durch, wollte da noch etwas warten bevor ich irgendwelchen Blödsinn poste ;)
Eigentlich ist es ganz einfach - bzw. habe ich keinen anderen Weg gefunden - es muss einfach das shoutbox.css im Modulordner entsprechend angepasst werden. Mit etwas studieren des HTML Quelltextes der angezeigten Seite ist das eigentlich kein Problem.
Wo es jetzt aber doch etwas hackt, und ich um etwas Hilfe bitten möchte: Bei der Ausgabe eines Eintrags wird immer nur die Nachricht in einen
...blablaText
gesetzt... Ich möchte diese zwei Tags entfernen und durch einen einfachen Linebreak ersetzen. Leider habe ich jetzt auch nach zwei Stunden durchschauen des PHP Codes des Modules noch nicht herausgefunden wo/wie diese Tags eingefügt werden, damit ich das für mich ändern kann.
Ich hoffe mich halbwegs verständlich ausgedrückt zu haben ;) und hoffe das mir da jemand doch noch etwas unter die Arme greifen kann.
Besten Dank und lg,
Also ich habe mir auch
am 22.09.2008 - 13:38 Uhr
Also ich habe mir auch hierfür eine kleine Lösung bzw. einen Umweg "geschaffen", indem ich einfach in der Datei shoutbox.module in der entsprechenden Funktionen, aus der Variable die die Nachricht inkl
,
enthält, mittels str_replace diese zwei Tags durch die gewünschten Linebreaks ersetze.
Ist aber nicht gerade die sauberste Lösung, darum wäre ich froh wenn mich doch noch jemand auf den richtigen Weg bringen könnte :)
Modul erweitern
am 22.09.2008 - 13:44 Uhr
Also ich habe mir auch hierfür eine kleine Lösung bzw. einen Umweg "geschaffen", indem ich einfach in der Datei shoutbox.module in der entsprechenden Funktionen, aus der Variable die die Nachricht inkl
<p>, </p>
enthält, mittels str_replace diese zwei Tags durch die gewünschten Linebreaks ersetze.Ah, pfui. :-) Niemals, niemals direkt im Modul Änderungen machen (es sei denn, Du erstellst gerade einen Patch :-)).
Dafür gibt es bestimmt eine theme_* Funktion, die sich in der template.php Deines Themes überschreiben lässt.
Welche drupal Version verwendest Du denn?
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
=) ... eine sauber Lösung
am 22.09.2008 - 13:47 Uhr
=) ... eine sauber Lösung in sicht... jiha ;)
Drupal 6 ist bei mir im Einsatz... ich bin mehr oder weniger abosluter Neuling... fundiertes PHP und MySQL Wissen ist aber vorhanden ;)
schreibox
am 22.09.2008 - 13:54 Uhr
Ok, dann wolln wa mal :-)
Im Verzeichnis des Themes Deiner Wahl legst Du eine Datei namens template.php an (so sie denn nicht schon existiert).
Dort packst Du diesen Quelltext rein (mal angenommen, Dein Theme heisst "garland"):
<?php
function garland_shoutbox_post($shout, $links = array(), $alter_row_color=TRUE) {
// <p> aus der Nachricht entfernen
$shout->shout = str_replace('<p>', '', $shout->shout);
$shout->shout = str_replace('</p>', '<br />', $shout->shout);
// Get the registered username of the person who posted the shout.
if ($shout->uid > 0) {
$user = user_load(array("uid" => $shout->uid));
$shout->username = $user->name;
}
else {
$shout->username = 'an anonymous user';
}
// BUGBUG strstr returns from http:// till end
// we should use that instead of full url.
if (strstr($shout->url, "http://")) {
$shout->url = '<a href="'. $shout->url .'" target="_blank">'. $shout->nick .'</a>';
}
else {
$shout->url = $shout->nick;
}
if ($links) {
foreach ($links as $link) {
$linkattributes = $link['linkattributes'];
$link_html = '<img src="'. $link['img'] .'" width="'. $link['img_width'] .'" height="'. $link['img_height'] .'" alt="'. $link['title'] .'" class="shoutbox-imglink">';
$link_url = 'shoutbox/'. $shout->shout_id .'/'. $link['action'];
$img_links = l($link_html, $link_url, array('html' => TRUE)) . $img_links;
}
}
$title = 'Posted '. format_date($shout->created, 'custom', 'm/d/y') .' at '. format_date($shout->created, 'custom', 'h:ia') .' by '. $shout->username;
$shout_classes="shoutbox-msg ";
if ($alter_row_color) {
$shout_classes .= (($shout->color) ? ("shout-odd ") : ("shout-even "));
}
if ($shout->moderate == 1) {
$shout_classes .= "shoutbox-unpublished ";
$shout->shout .= t("(This shout is waiting for approval by a moderator.)");
}
return "<div class=\" $shout_classes \" title=\"$title\">$img_links<b>$shout->url</b>: $shout->shout</div>\n";
}
?>
Das müsste auch die Funktion sein, die Du im Modul geändert hast. Oder?
Versuch das mal. Ich bin mir jetzt nicht sicher, ob die
<p></p>
Tags in$shout->shout
stehen, müssten sie aber.hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Wenn ich das richtig
am 22.09.2008 - 13:58 Uhr
Wenn ich das richtig verstanden habe kopiere ich also einfach die bestehende Funktion aus der xxx.modules in die template.php des themes, benenne die Funktion um in _funktion-name und mache dann dort alle meine gewünschten Änderungen.
Liege ich da in etwa richtig? ... Wäre zwar ja auch nicht die sauberste Lösung, aber wenigstens "Drupal-konform" ;)
theme
am 22.09.2008 - 14:13 Uhr
Wenn ich das richtig verstanden habe kopiere ich also einfach die bestehende Funktion aus der xxx.modules in die template.php des themes, benenne die Funktion um in theme-name_funktion-name und mache dann dort alle meine gewünschten Änderungen.
Genau. Das funktioniert jedoch nur mit Funktionen, die mit "theme_" beginnen!
Liege ich da in etwa richtig? ... Wäre zwar ja auch nicht die sauberste Lösung, aber wenigstens "Drupal-konform" ;)
Doch, es ist die sauberste Lösung. Per Definition! :-)
Ein sehr ausführliches Handbuch gibt es dazu natürlich auch: Overriding themable output.
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Alles klar, besten Dank
am 22.09.2008 - 14:16 Uhr
Alles klar, besten Dank :)
das Stylesheet des Moduls direkt anzupassen ist aber kein "Vergehen", oder? ;)
theme
am 22.09.2008 - 14:24 Uhr
das Stylesheet des Moduls direkt anzupassen ist aber kein "Vergehen", oder? ;)
Hm, naja. Irgendwie schon.
Willst Du das jedes Mal, wenn Du das Modul auf eine neue Version aktualisiert hast, wieder ändern?
Bestimmt nicht :-)
Wenn Du die Änderung also in die style.css (oder wie die auch immer heissen mag) schreibst, bleibt sie von Updates verschont und Du fragst Dich nicht nach jedem Update, wo Du die Änderungen beim letzten Mal gemacht hast.
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Eben nicht, aber vielleicht
am 22.09.2008 - 14:26 Uhr
Eben nicht, aber vielleicht willst du mir ja einen kleinen Tip verraten wie ich das hübsch lösen kann? :)
theme
am 22.09.2008 - 14:39 Uhr
Eben nicht
Nicht? Was denn?
Mal angenommen, Du möchtest die Farbe der Nachrichten ändern. Im CSS des Moduls ist das
div.shoutbox-msg {
color: #000000;
font-size : xx-small;
padding: 5px 0px 5px 0px;
}
Dann schreibst Du in die CSS-Datei Deines themes
div.shoutbox-msg {
color: #0000ff;
}
und schon hast Du die Nachrichten in strahlendem Blau.
Eigentlich ganz einfach.
Stefan
PS: Cache leeren nicht vergessen
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Das heißt für mich also,
am 22.09.2008 - 14:43 Uhr
Das heißt für mich also, dass mehr oder weniger alles was im Theme definiert ist, das dem Entsprechende eines Moduls überschreibt? ... Richtig?
theme
am 22.09.2008 - 14:53 Uhr
Das heißt für mich also, dass mehr oder weniger alles was im Theme definiert ist, das dem Entsprechende eines Moduls überschreibt? ... Richtig?
Kann man so sagen, ja. Dabei kommt es zwar noch auf den Detailgrad der CSS-Selektoren an, prinzipiell stimmt das aber. Dafür sind Themes ja auch gemacht.
Die Module (und drupal) bieten Dir nur einen Basis-Stil, den Du dann mittels Themes ändern kannst.
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Alles klar.. vielen, vielen
am 22.09.2008 - 15:05 Uhr
Alles klar.. vielen, vielen Dank für deine Hilfe, du hast mir da auch bei einigen anderen Sachen mal endlich Klarheit verschafft :)
lg, Christof
Bei mir wurden die
am 07.09.2009 - 14:20 Uhr
Bei mir wurden die Änderungen erst akzeptiert, nachdem ich das Theme (Wabi) noch einmal abgespeichert habe. Anscheinend werden erst dann die Änderungen der Theme-css weitergegeben.
Eine ganz andere Frage: Die shoutbox zeigt kein Datum an, was wichtig für mich wäre. Kan man da nicht mit php-code einen simplen Datumsstempel hinzufügen?
Danke, migas