Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Umlaute: falsche Reihenfolge im TagCloud news Modul #79

Open
pindo-bindo opened this issue Oct 12, 2021 · 1 comment
Open

Umlaute: falsche Reihenfolge im TagCloud news Modul #79

pindo-bindo opened this issue Oct 12, 2021 · 1 comment

Comments

@pindo-bindo
Copy link

pindo-bindo commented Oct 12, 2021

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

@pindo-bindo pindo-bindo changed the title Mutated vowels: wrong order of tags in TagCloud news module Umlaute: falsche Reihenfolge im TagCloud news Modul Oct 12, 2021
@Total-Reality
Copy link

Total-Reality commented Jan 22, 2022

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants