Zum Inhalt springen

RealURL und dr_wiki

Erstellt am 10. August 2007 · 1 Antwort · letzte Antwort am 1. September 2010

Tags: Frage

chhe ·

Moin!

Ich habe hier realURL und dr_wiki laufen. RealURL ist entsprechend der Anleitung bei myasterisk.de folgendenmaßen für dr_wiki konfiguriert:

$TYPO3_CONF_VARS['EXTCONF']['myPostVarSets'] = array(
  '_DEFAULT' => array (
    'wiki' => array(
      array(
        'GETvar' => 'tx_drwiki_pi1[keyword]',
      ),
      array(
        'GETvar' => 'tx_drwiki_pi1[showUid]',
      ),
      array(
        'GETvar' => 'tx_drwiki_pi1[cmd]',
      ),
    ),
  ),
);

Das hat so leider zwei unschöne Folgen:

1. Die Wiki-Keywords werden mit Großbuchstaben in den Dateinamen übernommen.

2. Leerzeichen in den Wiki-Keywords werden ebenfalls übernommen.

Ich habe schon an eine Lösung a la von hinten durch die Brust ins Auge gedacht:

$TYPO3_CONF_VARS['EXTCONF']['myPostVarSets'] = array(
  '_DEFAULT' => array (
    'wiki' => array(
      array(
        'GETvar' => 'tx_drwiki_pi1[keyword]',
        'lookUpTable' => array(
          'table' => 'tx_drwiki_pages',
          'id_field' => 'keyword',
          'alias_field' => 'keyword',
          'addWhereClause' => ' AND NOT deleted',
          'useUniqueCache' => 1,
          'useUniqueCache_conf' => array(
            'strtolower' => 1,
            'spaceCharacter' => '_',
          ),
        ),
      ),
      array(
        'GETvar' => 'tx_drwiki_pi1[showUid]',
      ),
      array(
        'GETvar' => 'tx_drwiki_pi1[cmd]',
      ),
    ),
  ),
);

Das resultiert dann aber darin, daß auch alle anderen Links innerhalb des Wikis denselben Namen bekommen.

Hat jemand eine Idee?

chhe ·

Ich antworte mal selbst. Bisher habe ich dafür im Netz keine Lösung gefunden, nun aber selbst eine für das Leerzeichenproblem erstellt. Man kann dem mit einer angepaßten RealURL-Konfiguration entgegenwirken.

Im Bereich postVarSets verwendet man etwa folgendes:

'postVarSets' => array(
    '_DEFAULT' => array(
        // dr_wiki
        'wiki' => array(
            array(
                'GETvar' => 'tx_drwiki_pi1[keyword]',
                'userFunc' => 'fileadmin/class.tx_realurlHelper.php:&tx_drwiki_realurlHelper->main',
            ),
            array(
                'GETvar' => 'tx_drwiki_pi1[showUid]',
            ),
            array(
                'GETvar' => 'tx_drwiki_pi1[cmd]',
            ),
        ),
    ),
),

Außerdem erstellt man die Datei fileadmin/class.tx_realurlHelper.php mit folgendem Inhalt:

<?php
class tx_drwiki_realurlHelper {
    // character to use instead of spaces
    var $spaceReplacement = '_';

    function main($params, $ref) {
        if ($params['decodeAlias']) {
            return $this->alias2id($params['value']);
        } else {
            return $this->id2alias($params['value']);
        }
    }

    function id2alias($value) {
        return str_replace(' ', $this->spaceReplacement, $value);
    }

    function alias2id($value) {
        return str_replace($this->spaceReplacement , ' ', $value);
    }
}
?>

Nun werden die Leerzeichen durch das in $spaceReplacement angegebene Zeichen ersetzt. Natürlich muß man darauf achten, daß dieses nicht in Keywords vorkommt.