hschottm / tags

Contao tags extension
11 stars 15 forks source link

Umlaute: falsche Reihenfolge im TagCloud news Modul #79

Open pindo-bindo opened 2 years ago

pindo-bindo commented 2 years ago

Während die Reihenfolge der Tags (mit Umlauten) im Template news_full_tags.html5 im Newsleser richtig ist, stimmt die Reihenfolge im TagCloud News Module nicht, dort werden Umlaut-Tags hinter dem Z eingeordnet.

IST

Vorlesen Zusatzmaterial Überarbeiten

SOLL

Überarbeiten Vorlesen Zusatzmaterial

Contao Version 4.9.20 - Tags Version 4.5.5

Total-Reality commented 2 years ago

Das Problem existiert an dieser Stelle: https://github.com/hschottm/tags/blob/master/classes/TagList.php#L329

"usort" ermöglicht keine Sortierung nach Umlauten. Das ist von Haus aus so bei PHP. Die Worte mit Umlauten werden einfach an das Ende katapultiert. Siehe auch hier: https://www.marcokrings.de/arrays-sortieren-mit-umlauten/

Man muss also erst die Umlaute ersetzen. Ich konnte es lösen, indem ich die Funktion so umgeschrieben habe, dass die Sortierung nicht mehr anhand des Tagnamens erfolgt, sondern nach dem Feld "tag_alias"

function tag_alphasort($tag1, $tag2) { return strnatcasecmp($tag1['tag_alias'], $tag2['tag_alias']); }

Das benötigt allerdings zusätzlich noch die Anpassung an mind. 4 stellen (wenn man die Tagcloud für die News z.B. einsetzt.), sowohl in der Datei TagList.php als auch in TagListNews.php

array_push($tags, array('tag_name' => $objTags->tag, 'tag_alias' => \Contao\System::getContainer()->get('contao.slug')->generate($objTags->tag), 'tag_count' => $objTags->count));

Das ist jetzt schon halbwegs dynamisch programmiert, ich wollte aber erst mal nur sehen, ob das überhaupt funktioniert. Der zusätzliche Vorteil ist, dass man nun auch vernünftige Klassennamen hat, um einzelne Tags in der Tagcloud ansprechen zu können. Also bei uns heißt jetzt eine Klasse z.B. "tag-contao size6" statt vorher einfach nur "size6".

Werde bei Gelegenheit mal einen PR machen (sobald mir ein Kollege gezeigt hat wie das geht). Habe auch weitere Anpassungen vorgenommen, da mich z.B. stört, dass in der URL "tag" steht. Ich finde das ist im Deutschen nicht sinnvoll und habe in den Contao Einstellungen eingeführt, dass man den Begriff für das Auto Item selbst festlegen kann. Habe das bei uns auf "themen" statt "tag" gesetzt. Aber egal, mehr dazu später...

Hier mal das Zwischenergebnis, Siehe rechts in der Box: https://www.fast-media.net/de/blog/

"Überarbeitung" ist jetzt korrekt in der Reihenfolge eingebunden.