TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

RealUrl und Umlaute bei eigener Extension


Autor Nachricht
Verfasst am: 11. 05. 2009 [11:37]
Devil
Themenersteller
Dabei seit: 20.10.2005
Beiträge: 49
Hallo,
ich dreh echt noch am Rad. Ich hatte letzte Woche schon einmal bezgl. RealUrl, einer eigenen Extension und der Parameterübergabe geschrieben gehabt (www.typo3.net/forum/list/list_post//89510/). Das haut jetzt au super hin. Aber ich bekomme es absolut nicht hin, dass RealUrl mir meine Umlaute und Leerzeichen sauber umwandelt (Post die letzten zwei Beiträge unten). Folgendes habe ich gemacht.

Einen Link erzeugt:
PHP
$parameter[meinParameter] = "Rot & Grün";
$this->pi_linkTP_keepPIvars("Text", $parameter, 1, 1, $GLOBALS['TSFE']->page['uid'])


RealUrl-Konfiguration:
PHP
'postVarSets' => array(
   '_DEFAULT' => array(
      'neuerParameter' => array(
         array(
            'GETvar' => 'tx_meineExtension_pi1[meinParameter]',
         ),
      ),
   ),
),


Ergebnis:
www.meineDomain.de/neuerParameter/Rot%20%26%20Gr%FCn.html

Dachte ich würde zumindest mit Hilfe der LookUpTable die Leerzeichen schon einmal umwandeln können, aber das haut nicht hin:
PHP
'postVarSets' => array(
   '_DEFAULT' => array(
      'neuerParameter' => array(
         array(
            'GETvar' => 'tx_meineExtension_pi1[meinParameter]',
            'lookUpTable' => array(
               'table' => 'meineTabelle',
               'id_field' => 'uid',
               'alias_field' => 'meinTabellenFeld',
               'addWhereClause' => 'AND NOT deleted',
               'useUniqueCache' => 1,
               'useUniqueCache_conf' => array(
                  'strtolower' => 1,
                  'spaceCharacter' => '-',
               ),
            ),
         ),
      ),
   ),
),


Was mache ich verkehrt? Das kann doch nicht so schwer sein.

Danke für Eure Hilfe!

Gruß Devil
Profil
Verfasst am: 12. 05. 2009 [13:49]
Devil
Themenersteller
Dabei seit: 20.10.2005
Beiträge: 49
Ich habs jetzt. Ich hatte vor lauter Tabellen die Felder falsch miteinander verknüpft, sodass RealUrl das ganze nicht zuweisen konnte mit dem id_field und alias_field.

[Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 12.05.2009 um 14:02.]
Profil
Verfasst am: 20. 03. 2012 [14:37]
captainpicard
Dabei seit: 01.02.2012
Beiträge: 14
Hi,

ich habe leider ein ähnliches Problem.

Und zwar habe ich tt_news um ein weiteres Feld vom Typ 'Text' erweitert (tx_ttnewserweiterung_vorundnachname).
Nun möchte ich die tt_news-Suche nutzen um nach einem Namen suchen zu lassen.

Das klappt auch, allerdings sehen die Links zur Suche nicht gerade optimal aus:

www.meineseite.de/suche/Hans Schäfer/

Funktionieren tut das Ganze, da der Link per urlencode umgeschrieben wird:

www.meineseite.de/suche/Hans%20Sch%C3%A4fer

Mein Ziel ist natürlich, dass RealURL die Links genauso wie bei normalen Seiten umschreibt, also:

www.meineseite.de/suche/hans-schaefer/

Aber das will einfach nicht gelingen.

Meine RealURL-Config:
PHP
'suche_name' => array(
        array(
          'GETvar' => 'tx_ttnews[swords]',
          //'userFunc' => 'fileadmin/scripts/class.tx_realurlHelper.php:&tx_removespaces_realurlHelper->main',
          'lookUpTable' => array(
            'table' => 'tt_news',
            'id_field' => 'uid',
            'alias_field' => 'tx_ttnewserweiterung_vorundnachname',
            'addWhereClause' => ' AND NOT deleted',
            'useUniqueCache' => 1,
            'useUniqueCache_conf' => array(
              'strtolower' => 1,
              'spaceCharacter' => ' ',
            ),
          ),
        ),
      ),


Über userFunc krieg ich wenigstens die Kleinschreibung hin und die Leerzeichen weg,
aber die Umlaute bleiben.

Hier der Code:
PHP
<?php
class tx_removespaces_realurlHelper {
   var $spaceReplacement = '-';
 
   function main($params, $ref) {
       if ($params['decodeAlias']) {
           return $this->alias2id($params['value']);
       } else {
           return $this->id2alias($params['value']);
       }
   }
 
   function id2alias($value) {
     $ersetzen = array('ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss');
     $value = strtr($value, $ersetzen);
     $value = strtolower($value);
 
     return str_replace(' ', $this->spaceReplacement, $value);
   }
 
   function alias2id($value) {
     return str_replace($this->spaceReplacement , ' ', $value);
   }
}
?>


Für hilfreiche Ideen wäre ich sehr dankbar!
Grüße
Profil