Migration von realurl Pfaden
realurl.conf (<= TYPO3 v8)
Früher wurden häufiger derartige realurl-Konfigurtionen für die News-Detailansicht verwendet.
Im alias_field finde die Verknüpfung von dem News-Titel mit dem uid+1432 statt, wobei die 1432 willkürlich gewählt ist. Der Grund dafür lag darin begründet, dass Google damals für News-Seiten eine 4-stellige eindeute Ziffer forderte.
... 'article' => array ( array ( 'GETvar' =>'tx_news_pi1[news]', 'lookUpTable' => array ( 'table' => 'tx_news_domain_model_news', 'id_field' => 'uid', 'alias_field' => 'concat(title," ",(uid+1432))', 'addWhereClause' =>' AND NOT deleted', 'useUniqueCache' => 1, 'useUniqueCache_conf'=> array ( 'strtolower' => 1, 'spaceCharacter' => '-', ), 'languageGetVar' => 'L', 'languageExceptionUids' => '', 'languageField' => 'sys_language_uid', 'transOrigPointerField' => 'l10n_parent', 'autoUpdate' => 1, 'expireDays' => 180, ), ), ), ...
config.yaml (>= TYPO3 v9)
Möchte man die Pfade mit den 4-stelligen Ziffern am Ende beibehalten, kann folgende Vorgehensweise verwendet werden. Diese SQL-Anweisungen können beispielsweise direkt in phpmyadmin ausgeführt werden.
DROP FUNCTION IF EXISTS `cool_url`; DELIMITER ;; CREATE FUNCTION `cool_url` (`original` varchar(512) CHARSET utf8mb4 COLLATE utf8mb4_bin, `uidplus` int(11)) RETURNS varchar(512) CHARSET utf8mb4 BEGIN DECLARE translit VARCHAR(512) DEFAULT ''; DECLARE len INT(3) DEFAULT 0; DECLARE pos INT(3) DEFAULT 1; DECLARE letter VARCHAR(2); SET original = TRIM(LOWER(original)); SET uidplus = uidplus + 1432; SET len = CHAR_LENGTH(original); WHILE (pos <= len) DO # get one letter from original SET letter = SUBSTRING(original, pos, 1) COLLATE utf8mb4_bin; CASE TRUE # basic chars WHEN letter IN ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9' COLLATE utf8mb4_bin) THEN SET letter = letter; # chars with diacritics and azbuka WHEN letter IN('á','à','â','å','ā','ą','ă' COLLATE utf8mb4_bin) THEN SET letter = 'a'; WHEN letter IN('ä' COLLATE utf8mb4_bin) THEN SET letter = 'ae'; WHEN letter IN('б' COLLATE utf8mb4_bin) THEN SET letter = 'b'; WHEN letter IN('č','ć','ç','ć' COLLATE utf8mb4_bin) THEN SET letter = 'c'; WHEN letter IN('ď','đ','д' COLLATE utf8mb4_bin) THEN SET letter = 'd'; WHEN letter IN('é','ě','ë','ё','è','ê','ē','ę','ь','э','œ' COLLATE utf8mb4_bin) THEN SET letter = 'e'; WHEN letter IN('ф','ѳ' COLLATE utf8mb4_bin) THEN SET letter = 'f'; WHEN letter IN('ģ','ğ','г' COLLATE utf8mb4_bin) THEN SET letter = 'g'; WHEN letter IN('í','î','ï','ī','î','і','и','й' COLLATE utf8mb4_bin) THEN SET letter = 'i'; WHEN letter IN('ķ','к' COLLATE utf8mb4_bin) THEN SET letter = 'k'; WHEN letter IN('ľ','ĺ','ļ','ł','л' COLLATE utf8mb4_bin) THEN SET letter = 'l'; WHEN letter IN('м' COLLATE utf8mb4_bin) THEN SET letter = 'm'; WHEN letter IN('ň','ņ','ń','ñ','н' COLLATE utf8mb4_bin) THEN SET letter = 'n'; WHEN letter IN('ó','ø','õ','ô','ő','ơ','о' COLLATE utf8mb4_bin) THEN SET letter = 'o'; WHEN letter IN('ö' COLLATE utf8mb4_bin) THEN SET letter = 'oe'; WHEN letter IN('п' COLLATE utf8mb4_bin) THEN SET letter = 'p'; WHEN letter IN('ŕ','ř','р' COLLATE utf8mb4_bin) THEN SET letter = 'r'; WHEN letter IN('š','ś','ș','ş','с','ß' COLLATE utf8mb4_bin) THEN SET letter = 's'; WHEN letter IN('ť','ț','т' COLLATE utf8mb4_bin) THEN SET letter = 't'; WHEN letter IN('ú','ů','ù','û','ū','ű','ư','у' COLLATE utf8mb4_bin) THEN SET letter = 'u'; WHEN letter IN('ü' COLLATE utf8mb4_bin) THEN SET letter = 'ue'; WHEN letter IN('в' COLLATE utf8mb4_bin) THEN SET letter = 'v'; WHEN letter IN('ý','ы','ѵ' COLLATE utf8mb4_bin) THEN SET letter = 'y'; WHEN letter IN('ž','ź','ż','з' COLLATE utf8mb4_bin) THEN SET letter = 'z'; ELSE SET letter = '-'; END CASE; # joining new string SET translit = CONCAT(translit, letter); SET pos = pos + 1; END WHILE; # replacing more dashes by one WHILE (translit REGEXP '\-{2,}') DO SET translit = REPLACE(translit, '--', '-'); END WHILE; RETURN CONCAT(TRIM(BOTH '-' FROM translit),'-',uidplus); #RETURN TRIM(BOTH '-' FROM translit); END;; DELIMITER ; update tx_news_domain_model_news set path_segment = cool_url(title,uid);
Erstellt am: