Danke Danke:  0
Gefällt mir Gefällt mir:  0
Dislikes Dislikes:  0
Ergebnis 1 bis 2 von 2

Thema: Wordpress Glossar

  1. #1

    Registriert seit
    19.08.04
    Beiträge
    597
    Danke (erhalten)
    0
    Gefällt mir (erhalten)
    2

    Standard Wordpress Glossar

    Hallo !

    Ich komme eigentlich aus der Typo3 Ecke, dort gibt es einige nette Extensions. Ich suche nun etwas für Wordpress.


    Ich habe mir folgendes vorgestellt :


    Eine Maske zum anlegen von einem Wort + Beschreibung. Die URL soll dann wie folgt aussehen :

    www.domain.de/glossar/wort.html

    Schön wäre noch folgendes :

    Sollte das Wort in einem Text vorkommen, so sollte automatisch ein Link zu dem Wort im Glossar eingefügt werden.

    Kennt jemand da was netter ?

  2. #2
    Member of Honour Avatar von beavisbee
    Registriert seit
    22.02.07
    Beiträge
    2.722
    Danke (erhalten)
    0
    Gefällt mir (erhalten)
    104

    Standard

    Ich habe selbst für Wordpress noch keine Plugins geschrieben, aber hier mal ein genereller Weg:

    Wenn es was statisches sein soll, dann erstellst du einfach eine Datei glossarWords.php mit folgendem Inhalt:

    PHP-Code:
    <?php
    return array(
        
    'wort1' => 'Dies ist die Beschreibung zu Wort 1',
        
    'wort2' => 'Dies ist die Beschreibung zu Wort 2',
    );
    Wenn es dynamisch von mehreren Leuten geändert werden soll, musst du dir halt alles in 'ne Datenbank-Tabelle hauen und ein kleines Backend zur Administration für schreiben.

    Dann gibt es meinetwegen eine glossarList.php, welche das Array im einfachsten Falle in eine Definitions-Liste packt und wenn Parameter word=... übergeben wurde, wird nur dieses Wort angezeigt:
    PHP-Code:
    <?php
    $words 
    = include 'glossarWords.php';

    //Sicherheits-Check
    if (!is_array($words)) {
        
    $words = array();
    }


    $wordlist = array();
    $w '';

    //Wenn ein gesuchtes Wort per Parameter übergeben wurde, dann nur dieses anzeigen
    if (isset($_GET['word']) && !empty($_GET['word'])) {

        
    //wenn man mit dem Wort direkt 'ne Datenbank-Abfrage machen wollte, wäre hier
        //ein Escapen angebracht - z.B. mit mysql_real_escape_string()
        
    $w trim($_GET['word']);

        if (
    array_key_exists($w$words)) {
            
    $wordlist[$w] = $words[$w];
        }
    //Ansonsten eine komplette Glossar-Wortliste anzeigen
    } else {
        
    //Array nach keys sortieren
        
    ksort($words);
        
    $wordlist $words;
    }

    $content '';
    foreach (
    $wordlist as $word => $description) {
        
    $content .= '  <dt>' $word '</dt>' chr(10);
        
    $content .= '  <dd>' $description '</dd>' chr(10) . chr(10);
    }

    if (!empty(
    $content)) {
        
    $content '<dl>' $content '</dl>';
    } else {
        
    $msg 'Das Glossar enthält keine Wörter!';
        if (!empty(
    $w)) {
            
    $msg 'Das Wort &quot;' $w '&quot; wurde nicht im Glossar gefunden';
        }
        
    $content '<div class="error">' $msg '</div>';
    }

    echo 
    $content;
    und nun kommt die Geschichte mit dem gewünschten Pfad glossar/wort.html

    Hierzu nutzt du einfach mod_rewrite mit folgender Regel in der .htaccess:
    Code:
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^glossar/([^\?\\/]+).html$ /glossar/glossarList.php?word=$1 [L,QSA]
    RewriteRule ^glossar$ /glossar/glossarList.php [L,QSA]
    RewriteRule ^glossar/.*$ /glossar/glossarList.php [L,QSA]
    
    </IfModule>
    und nun willst du ja auch die Verlinkung im Text haben - das könnte dann so aussehen:
    PHP-Code:
    <?php
    <?php
    $words 
    = include 'glossarWords.php';

    //Sicherheits-Check
    if (!is_array($words)) {
        
    $words = array();
    }


    $myText 'Dies ist mein Text, in welchem Wort1 und Wort2 vorkommen.';

    function 
    getGlossarLink($word)
    {
        
    $glossarword strtolower($word);
        return 
    '<a href="./glossar/' $glossarword '.html">' $word '</a>';
    }

    if (
    sizeof($words)>0) {
        
    $pattern '/(' implode('|',array_keys($words)) . ')/ie';
        
    $myText preg_replace($pattern'getGlossarLink(\\1);'$myText);
    }

    echo 
    $myText;
    (das musst du natürlich nun so als Wordpress-Plugin umsetzen, dass der auszugebende Text statt $myText mit den Links ersetzt wird)


    Vielleicht gibt es sowas ja auch schon fertig als Plugin - aber so wäre jedenfalls meine Herangehensweise, wie ich das selbst als Plugin umsetzen würde...

    man könnte das ganze natürlich sogar noch mit bissl AJAX schön machen, dass die Definition gleich beim Hovern angezeigt wird...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •