Seite 1 von 1

CSS-Klassen für Kategorien

Verfasst: Do 2. Aug 2018, 19:53
von chris8408
Hallo zusammen,

ich stoße immer wieder auf die Frage nach individuellen CSS für Kategorien, beispielsweise um Icons vor Navigationspunkte zu setzen.

Ich habe mir mal auf Basis des aktuellen GIT-Repositories (Contenido 4.9.12) die Mühe gemacht den Core dahingehend anzupassen, dass man beim Umbenennen einer Kategorie neben Name und Alias nun auch CSS-Klassen eingeben kann. Eigentlich ist es ein Freitext-Feld, welches in Frontendmodulen frei verwendet werden kann. Ich nutze es halt um CSS-Klassen einer Kategorie mit auf den Weg zu geben.

Folgende Dateien wurden angepasst:
contenido/includes/include.str_overview.php
contenido/includes/functions.str.php
contenido/includes/type/action/include.str_renamecat.action.php
contenido/scripts/str_overview.js
contenido/templates/standard/template.str_overview.html
setup/data/tables.txt

Anpassungen:

Code: Alles auswählen

diff  setup/data/tables.txt setup/data/tables.txt
133a134
> "cat_lang";"catcssclasses";"varchar(255)";"";"";"";"";""
diff  contenido/templates/standard/template.str_overview.html contenido/templates/standard/template.str_overview.html
172a173,178
> 
>                         <span style="padding-left:15px;">&nbsp;</span>
> 
>                         {LABEL_CATCSSCLASSES_NAME}
>                         {INPUT_CATCSSCLASSES_EDIT}
> 

diff  contenido/scripts/str_overview.js contenido/scripts/str_overview.js
94a95
>                 document.renamecategory.newcategorycatcssclasses.value = strDataObj[iCatId]['catcssclasses'];

diff  contenido/includes/type/action/include.str_renamecat.action.php contenido/includes/type/action/include.str_renamecat.action.php
20c20
<     strRenameCategory($idcat, $lang, $newcategoryname, $newcategoryalias);
---
>     strRenameCategory($idcat, $lang, $newcategoryname, $newcategoryalias, $newcategorycatcssclasses);

diff  contenido/includes/functions.str.php contenido/includes/functions.str.php
471c471
< function strRenameCategory($idcat, $lang, $newCategoryName, $newCategoryAlias) {
---
> function strRenameCategory($idcat, $lang, $newCategoryName, $newCategoryAlias, $newCategoryCatCssClasses) {
503a504
>     $oCatLang->set('catcssclasses', $newCategoryCatCssClasses);

diff  contenido/includes/include.str_overview.php contenido/includes/include.str_overview.php
339a340
>         $newItem->setCustom('catcssclasses', $item['catcssclasses']);
370c371
<             idtree, A.idcat, level, name, parentid, preid, postid, visible, public, idtplcfg, C.urlname as alias
---
>             idtree, A.idcat, level, name, parentid, preid, postid, visible, public, idtplcfg, C.urlname as alias, catcssclasses
427a429
>             $entry['catcssclasses'] = $db->f('catcssclasses');
554a557
> 
679a683
>         $sCatCssClasses = $value->getCustom('catcssclasses');
681a686
>         $aRecord['catcssclasses'] = conHtmlSpecialChars($sCatCssClasses);
890a896,900
> 
> $oNewAlias = new cHTMLTextbox('newcategorycatcssclasses');
> $oNewAlias->setStyle('width:150px; vertical-align:middle;');
> $tpl->set('s', 'INPUT_CATCSSCLASSES_EDIT', $oNewAlias->render());
> 
Die tables.txt aus dem Setup habe ich angepasst, um über die Update-Funktion die Datenbanktabelle anzulegen.
Das Sprachtag "LABEL_CATCSSCLASSES_NAME" habe ich nicht in die Locales eingebaut. Ich habe aktuell kein Programm zum Übersetzen der .po in die .mo-Datei

Falls jemand einen besseren Vorschlag hat, würde ich mich über Anregungen sehr freuen. Kommentare auch gerne.

Beste Grüße,

Christian
CatCssClasses.zip
Core-Dateien zum Tausch für CSS Klassen bei Kategorien
(32.55 KiB) 111-mal heruntergeladen

Re: CSS-Klassen für Kategorien

Verfasst: Fr 3. Aug 2018, 07:48
von Oldperl
Servus Christian,

kann man so machen. Schön wäre wenn DU die geänderten Dateien als DL anhängen könntest, denn nicht jeder kann etwas mit einer Diff-/Patch-Datei anfangen.
Persönlich löse ich das immer über das Navi-Modul direkt, indem ich bestimmten Kategorien dort entsprechend eine CSS-Klasse zuweisen. Da dies in den meisten Fällen nur einmal im Leben der Webseite erfolgt, reicht das dort in der Regel aus. Will man es noch konfigurierbar machen, so kann man das über eine Mandanteneinstellung tun.
Als Lösung ohne den Core zu verändern wäre sicherlich ein Plugin überlegenswert, wobei man da zuerst mal schauen muss, inwieweit im Core Chains vorhanden sind für eine Einbindung. Wenn da dann welche fehlen, wäre eventuell sogar besser, diese im Core zu integrieren. Zumindest in der functions.str.php findet man davon aber schon ein paar.

Gruß aus Franken

Ortwin

Re: CSS-Klassen für Kategorien

Verfasst: Fr 3. Aug 2018, 09:34
von chris8408
Hallo Ortwin,

danke für die Hinweis. Dateien sind angehängt....

Für ein bis zwei Kategorien sicherlich als Ausnahme im Script machbar, wenn man aber wirklich 15-20 Kategorien belegen möchte und sich regelmäßig etwas ändern ist das kaum realisierbar. So kann ein Redakteur das selber machen...

VG Christian