Glossar im Forum

Started by metamorph, July 28, 2005, 08:12:43 AM

Previous topic - Next topic

metamorph

Hallo,

ich habe hier im Forum danach gesucht aber nichts gefunden.

Ich suche eine Art Mod, die nach selbstdefinierten Begriffen im Forum sucht, und diese duch mouseover die Definition in einem kleinen Fenster öffnet.

Es gibt sowas für cms Systeme wie Mambo das Glossary. Es wäre sehr interessant wenn bestimmte Begriffe nicht erkärt werden müssen, und das man die Definition direkt erhält.

Gibt es sowas für das SMF?

Danke im voraus.


Metamorph

Christian Land

Keine Ahnung ob das noch geht, aber bei YaBB konnte man sowas per Zensur-Funktion hintricksen... da hätte man dann einfach z.B. SMF als zu zensierendes Wort definiert und es z.B. mit <a href="javascript:hier nen popup mit glossar aufrufen">SMF</a> ersetzt... nicht elegant, aber eine Übergangslösung ;D

Hondo

Hallo,
für yabbse hatte ich das auch, aber nicht direkt im Forum sondern auf einer separaten seite.
Könnte dir jetzt nur noch ein Modul für MKPortal anbieten, falls dir das was hilft.

Gruß Andreas

Pitti

auf tom's hardwareguide läuft sowas ähnliches über nen javascript,
was nach laden der seite einzelne begriffe mit werbelinks hinterlegt,
die bei mouseover auch nen kleenes popup zeigen.

mal abgesehn davon, daß hier der content von dem abweicht, was du möchtest,
sollte die engine den gewünschten effect erbringen.
ob und wo es das ding gibt, weiß ich aber nicht.

gruß pitti

Dudelsack

Meinst du vielleicht die Akronyme?
Wie zB btw (<-- Fahr mit der Maus drüber)

Wenn ja, dan "Quote" mal meinen Beitrag, um zu sehen wie der BBCode geht, den fügst du dann einfach in die Zensurliste ein.
sorry for my bad english

Pitti

Quote from: Dudelsack on July 31, 2005, 02:58:16 PM
Meinst du vielleicht die Akronyme?
Wie zB btw (<-- Fahr mit der Maus drüber)

Wenn ja, dan "Quote" mal meinen Beitrag, um zu sehen wie der BBCode geht, den fügst du dann einfach in die Zensurliste ein.

sowas kannste auch in codetags fassen, da sieht mans gleich ;)
[acronym=btw: by the way]btw[/acronym]

so wärs auch ne idee. allerdings musses dann der parser auf dem webserver leisten.
als js dagegen der userrechner. (evtl optional abschaltbar)

gruß pitti

metamorph

Hallo,

danke für die Antworten, aber leider ist nicht das dabei, was ich suche.

Ich suche irgendwie eine Mod, in dem eine Wortliste mit Erklärungen also ein Glossar erstellt werden kann, und ohne BBCode diese Mod bei der Ausgabe des Threads die Wörter im Thread mit der Wortliste vergleicht. Sollten welche dabei sein, wird über diesen Begriff durch mouseover ein Fenster mit der Erklärung geöffnet.

Ich finde sowas ganz praktisch, weil die Foren immer für spezifische Themen sind mit speziellen Fachausdrücken.
Dadurch kann man die Fachbegriffe ohne weiteres verwenden, und andere die diesen Thread lesen auch die Fachbegriffe verstehen, obwohl sie es nicht kennen.

Schade das noch niemand auf so eine Idee gekommen ist.

Trotzdem danke

Metamorph

Dudelsack

Meinst du vielleicht sowas ähnliches? (siehe Wort Entity)
sorry for my bad english

metamorph

Hi dudelsack,

genau das .

Ich habe auch Mambo und die Glossary-Komponente wie auf der Seite installiert ist.
Nun möchte ich auch, das diese Wörter im Forum durchsucht werden.

Leider geht es laut Author der Komponente mit der Glossary-Komponente nicht, weil diese nur das News Content durchsucht.

Aber genau so was hatte ich mir eigentlich für das Simple Machine Forum vorgestellt.
Ich finde das Forum selbst klasse, bietet mehr als phpbb-Forum.

Kennst du vielleicht eine Möglichkeit so etwas zu realisieren?

Metamorph

Dudelsack

Sowas wäre durchaus ein genialer Mod (oder Standardfunktion...), würde ich auch installieren, aber bis jetzt hab ich keinen Mod, oder eine Funktion dafür gefunden.

Es gibt 3 Möglichkeiten:

Entweder du kannst es selber, und fangst gleich damit an ;)
Oder du fragst ein paar Hobbyprogrammierer (Featurerequest), ob sie so einen Mod für's SMF machen können, und wartest ab, bis es fertig ist.
Oder die dritte Möglichkeit; Du vergisst das Ganze, ganz schnell, und so ein Mod wird nie entwickelt ;)
sorry for my bad english

metamorph

Hi,

also die 3. Möglichkeit vergesse ich direkt.

Also bleibt nur die 1. oder 2. Möglichkeit, werde mich mal in den nächsten Tagen mal etwas mehr darüber informieren.

Vielleicht hat es noch keiner gemacht, wegen der Performance. Dies glaube ich aber nicht, denn es gibt so viele andere Mods die mehr Performance benötigen.

Ich finde die Idee in einem Forum auch genial.
Vielleicht liest das ein Mod Programmierer  :D und hat Lust dies zu programmieren. Denn ich denke sowas würden auch mehrere Leute installieren.

Werde zuerst mal dein 2. Vorschlag machen.


Trotzdem danke

Metamorph

Dudelsack

Ja, wäre sicherlich ein interessanter Mod.
Warum es den Mod bis jetzt noch nicht gibt, liegt wahrscheinlich daran, weil ihn noch niemand vorgeschlagen hat, vielleicht aber doch, und der Mod ist schon längst in Arbeit? ...
sorry for my bad english

Christian Land

#12
Da ihr gerade so nett am diskutieren seid...

Datenbank-Tabelle:

CREATE TABLE `smf_glossary` (
  `gloss_id` int(11) unsigned NOT NULL auto_increment,
  `gloss_word` varchar(60) NOT NULL default '',
  `gloss_desc` text NOT NULL,
  `gloss_match` tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (`gloss_id`),
  KEY `gloss_id` (`gloss_id`)
) ENGINE=MyISAM;


in Subs.php am Ende:

function do_gloss($message)
{

global $gloss_search,$gloss_replace,$db_prefix,$modSettings;

if ($modSettings['gloss_enabled'] == 1)
{

// load glossary

if (is_null($gloss_search))
{
$result = db_query('SELECT gloss_id, gloss_word, gloss_desc, gloss_match FROM '.$db_prefix.'glossary', __FILE__, __LINE__);
$glosswords = array();
while ($row = mysql_fetch_assoc($result))
{
$gloss_search[] = '/\b('.preg_quote($row['gloss_word']).')\b/'.(((int)$row['gloss_match']==0) ? 'i' : '');
$gloss_replace[] = '<a href="javascript:void(0);" onmouseover="return overlib(\''.str_replace('"','&quot;',str_replace("\r",'',str_replace("\n",'',addslashes(nl2br($row['gloss_desc']))))).'\');" onmouseout="return nd();">\1</a>';
}
mysql_free_result($result);
}

// s&r

if (count($gloss_search)>0)
$message = preg_replace($gloss_search,$gloss_replace,$message);

}

return $message;

}


in index.template.php  vor die Zeile

<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[

folgende Zeile einfügen (WICHTIG! in jeder index.template.php muss die folgende Zeile im <head> vorkommen!)

<script language="JavaScript" type="text/javascript" src="', $settings['default_theme_url'], '/overlib_mini.js"></script>

dann noch Overlib von http://www.bosrup.com/web/overlib/ runterladen, entpacken und die Datei "overlib_mini.js" in das Themes\default Verzeichnis kopieren. Zu guter Letzt in Display.php noch nach

// Run BBC interpreter on the message.
$message['body'] = parse_bbc($message['body'], $message['smileysEnabled'], $message['ID_MSG'])


suchen und dahinter

$message['body'] = do_gloss($message['body']);

einfügen. Um das Ganze dann noch per Admin-Oberfläche an-/abschaltbar zu machen muss man noch in Modifications.english.php (oder welche Sprache auch immer -- im Themes\default\languages\ Verzeichnis) die Zeile

$txt['gloss_enabled'] = 'Glossary-Mod';

einfügen. In ModSettings.php muss man noch folgende Änderung vornehmen: hinter

array('rule'),
// Who's online.
array('check', 'who_enabled'),

         
muss der folgende Block eingefügt werden:

array('rule'),
// Glossary-Mod.
array('check', 'gloss_enabled'),


Danach hast Du eine einfache Glossar-Funktion die man über die Admin-Oberfläche (Letzter Punkt vor dem Karma-Kram) an-/abschalten kann...

Du musst nur in der smf_glossary Tabelle entsprechende Einträge machen... gloss_word ist die Zeichenkette die gesucht wird, gloss_desc die Beschreibung die eingeblendet wird und gloss_match gibt an ob die Gross-Kleinschreibung beachtet wird (1) oder ob nicht (0). In gloss_desc muss korrektes HTML benutzt werden! (also bitte keine spitzen Klammern, etc. wenn sie nicht gerade im Zusammenhang mit Tags benutzt werden... also nicht sowas wie ">> Überschrift" sondern "&gt;&gt; Überschrift" !!!)

Das Ganze ist so gut wie ungetestet, weil ich das gerade in 10 Minuten zusammengetippert habe, aber auf jeden Fall sollte es ein guter anfang sein... aber ACHTUNG: je mehr Einträge es in smf_glossary gibt, desto langsamer wird die Sache!

Das Ganze sieht dann so aus:



Achja... bisher nur mit SMF 1.1 Beta 3 getestet...


Edits:
  • do_gloss() aktualisiert
  • Hinweis wegen index.template.php eingebaut
  • Hinter "// s&r" noch die if()-abfrage eingebaut um zu verhindern, dass bei einer leeren smf_glossary die Nachrichten gelöscht werden
  • do_gloss() aktualisiert um die Admin-Einstellung zu berücksichtigen
  • Anleitung erweitert um zu erklären wie noch die Admin-Einstellung eingebaut wird
  • Bug gefixt der zu sehr "seltsamen" Mehrfach-Ersetzungen geführt hat

Dudelsack

wow, danke für die gute Anleitung, werde es am Abend einmal ausprobieren und dir dann bescheid geben,...
sorry for my bad english

Dudelsack

hm, ich habe ein Testwort hinzugefügt.
Das Wort wird unterstrichen, aber wenn ich mit der Maus drüberfahre, dann passiert nichts, also habe ich mir das ganze im IE angesehen, und der gibt eine Fehlermeldung im Bereich des Wortes aus:
"Nicht abgeschlossene Zeichenfolgenkonstante"

Was auch immer das heißt

Und das ist der Quelltext, in dieser Zeile:
<a href="javascript:void(0);" onmouseover="return overlib('<b>Test:</b> Dies ist nur ein <i>Test</i>');" onmouseout="return nd();">Test</a>
Kannst du damit irgendwas anfangen?
sorry for my bad english

Christian Land

#15
Schau mal in den Quellcode der Seite... steht da wirklich genau die Zeile oder sind da irgendwo Zeilenumbrüche?

Nachtrag: Ich hab in der Funktion "do_gloss" die Zeile mit dem $gloss_replace[]   = '<a href... usw. umgebaut... ist zwar nicht schön, sollte aber jetzt funktionieren.

Das Problem sollten Zeilenumbrüche oder Anführungszeichen gewesen sein.

Dudelsack

Hi!
Seltsam, jetzt funktioniert es plötzlich, auch ohne der Änderung, ...
Keine Ahnung wieso, vielleicht hat es was mit den Bildern zu tun, auf die man warten muss, bis sie fertiggeladen sind, ich weiß es nicht...

Ich werde in den nächsten Tagen mal ein Auge darauf werfen ;)
Danke
sorry for my bad english

Christian Land

Naja, bau am Besten mal die Version ein, die jetzt in meinem Posting steht... die ist nochmal etwas stabiler... sicher ist sicher ;D

Dudelsack

#18
Und wenn man:
$gloss_replace[] = '<a href="javascript:void(0);" onmouseover="return overlib(\''.str_replace('"','&quot;',str_replace("\r",'',str_replace("\n",'',addslashes(nl2br($row['gloss_desc']))))).'\');" onmouseout="return nd();">\1</a>';

durch:
$gloss_replace[] = '<img src= "http://URL ZUM INFOBILD.gif" border="0" alt="Glossar" title="Glossar"> <a href="javascript:void(0);" onmouseover="return overlib(\''.str_replace('"','&quot;',str_replace("\r",'',str_replace("\n",'',addslashes(nl2br($row['gloss_desc']))))).'\');" onmouseout="return nd();">\1</a>';
ersetzt, dann kann man ein kleines Infobild davor setzen.

Sieht dann zB so aus:


Und falls wer das kleine Infobild haben will ,dann einfach speichern:


Mir war gerade langweilig ;)

Nachtrag:
Manchmal kommt es so vor, dass die "Stichwörter" zwar markiert werden (so wie sie sollen), aber dabei wird auch noch anderer Text ausgegeben, zB:
Quote>> Glossar Rules');" onmouseout="return nd();">Glossar Rules und in den FAQs
Das Wort, was hier gemeint ist, lautet "Rules", wenn ich mit der Maus drüber fahr, dann kommt das mini-popup, genauso, wie es auch funktionieren sollte, aber der restliche Text ist einwenig... seltsam...

Irgendeine Idee?
sorry for my bad english

metamorph

#19
Hi,

WOW klasse SnowCrash !!!

das so schnell jemand etwas dafür macht, finde ich klasse.

Werde es auch heute abend ausprobieren und testen.


Danke.

PS. Wo gibst du die Wörter mit Erklärungen ein?
      Meinste es funktioniert auch im SMF 1.05?
     


Metamorph

Advertisement: