Css eines Artikels ändern

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
User avatar
top
Posts: 535
Joined: Fri 11. Aug 2006, 15:03
Location: Eutin

Re: Css eines Artikels ändern

Post by top »

Danke pepe, das sieht vielversprechend aus. Die Seite auf der ich das brauchen kann, liegt voraussichtlich noch ein paar Monate auf Eis. Ich hoffe, deine Seite ist dann nicht schon im Ruhestand. :wink:
pepe
Posts: 3954
Joined: Mon 19. Jan 2004, 13:46

Re: Css eines Artikels ändern

Post by pepe »

Ich habe gerade mal OGs Vorschlag versucht... 1:1, das sah so gut aus.... leider kommt bei mir da nur im head an:

Code: Select all

  <meta name="keywords" content="*CSS-dark*" />
Neuinstallation - keine weiteren Scripts aktiv - alle Schalter in der config gesetzt, wie immer!

Könnte mir da ggf. jemand auf die Sprünge helfen.

Liegts vielleicht daran, dass ich nicht mehr so oft am PC bin und die "galoppierende Demenz" zugeschlagen hat?
Meine OS Rabiata ist momentan leider an der Schweine-Grippe erkrankt - bedauerlich - und ich mache für 2 Tage "Notdienst" am "Heim"-Computer ;-)
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Re: Css eines Artikels ändern

Post by flip-flop »

Das liegt nur an dem nicht ganz sauber geschriebenen Vergleich speziell bei strpos. Wenn das gesuchte Keyword als erstes steht klappt das so nicht. (Siehe strpos Manual). (Der Vergleich mit !== false fehlt nur).

Code: Select all

if(strpos($content['all_keywords'], '*CSS-dark*') !== false) {
   $template_default['body']['class'] = 'dark level-';
   $content['all_keywords'] = str_replace('*CSS-dark*', '', $content['all_keywords']);
}
Wenn in einer Funktion verwendet:

Code: Select all

 if(strpos($GLOBALS['content']['all_keywords'], '*CSS-dark*') !== false) { 
   $GLOBALS['template_default']['body']['class'] = 'dark level-';
   $GLOBALS['content']['all_keywords'] = str_replace('*CSS-dark*', '', $GLOBALS['content']['all_keywords']);
 }
Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
pepe
Posts: 3954
Joined: Mon 19. Jan 2004, 13:46

Re: Css eines Artikels ändern

Post by pepe »

Jau... wunderbar,

kaum macht mans richtig... schon klappt es auch!

Danke flip-flop... na, wen das keine Super-Community ist. Keine Stunde gewartet und schon "löppt der Laden" :-)
pepe
Posts: 3954
Joined: Mon 19. Jan 2004, 13:46

Re: Css eines Artikels ändern

Post by pepe »

Funktioniert das nur mit dem body-tag?

Meine Versuche, auf gleiche Weise an Stelle von "body" andere IDs oder Klassen z.B. "content" oder "#content" anzusprechen, klappte nicht :(

Wenn doch, wie bitteschön :?:

So klappte es natürlich:

Code: Select all

body.dark #content { background:#ccc; }
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Re: Css eines Artikels ändern

Post by flip-flop »

Das ist in diesem Fall auf body beschränkt.
Siehe: Technik/Core index.php -> source -> Ab Zeile 152

Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
pepe
Posts: 3954
Joined: Mon 19. Jan 2004, 13:46

Re: Css eines Artikels ändern

Post by pepe »

Danke flip-flop,
angeregt durch die Beispiele, habe ich mir jetzt ein rt_Script für den frontend-render-Ordner geschrieben, der mir die body-class grundsätzlich mit 2 zusätzlichen Klassen erweitert.

Einmal die CAT-ID der LaveLift-Kategorie und die CAT-ID der aktiven Kategorie selber

So kann ich jetzt LevelLift-weise oder/und auch Kategorie-weise meine Klassen in der CSS-Datei beeinflussen.

Damit wird aus: <body> => <body class="parent-XXX category-ZZZ">

Dadurch bekomme ich eine feine Möglichkeit, Anpassungen nahezu nur noch in der CSS-Datei vornehmen zu können...

FEINE SACHE, deshalb nochmas danke, für die Anregung :-)

Einfügen in den Ordner:
.../template/inc_sript/frontend_render/rt_inject-body-with-LevelList-class.php

Code: Select all

<?php

/* ****************************************************************************************
   rt_inject-body-with-LevelList-class.php                                 18.11.2009-20:25
 
   Der body-class zwei zusaetliche Klassen anfuegen: "parent-XXX" und "category-YYY"

   Damit wird aus: <body>  =>  <body class="parent-XXX category-ZZZ">   

   Jetzt koennen CSS-Klassen nach dem folgenden Schnittmuster beeinflusst werden:

   body {...}
   body.parent-XXX {...}        Betrifft die komplette Gruppe mit der LevelLift CAT-ID: XXX
   body.category-ZZZ {...}      Betrifft NUR die Kategorie mit der CAT-ID: ZZZ

   #content {...}
   .parent-XXX #content {...}   Betrifft die komplette Gruppe mit der LevelLift CAT-ID: XXX

   #right-container {...}
   .category-ZZZ #right-content {...}   Betrifft NUR die Kategorie mit der CAT-ID: ZZZ 

   So koennen Kategorie- oder LevelLift- basierte Aenderungen der CSS-Klassen  erfolgen

   Copyright (c) 2009 Manfred Peperkorn - all rights reserved
   **************************************************************************************** */

// ----------------------------------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {
   die("You Cannot Access This Script Directly, Have a Nice Day.");
}
// ----------------------------------------------------------------------------------------


// Zuerst abfragen der Eben und zuordnen der "LevelLift-ID" 
// ----------------------------------------------------------------------------------------
   if(isset($GLOBALS['LEVEL_ID'][1])) { $level_id = $GLOBALS['LEVEL_ID'][1];
 
// Der body-class die "LevelLift-ID" der Parent-Ebene und die "Kategorie-ID" anfuegen
// ----------------------------------------------------------------------------------------
   $GLOBALS['template_default']['body']['class'] = 'parent-'.$level_id.' category-';

}

?>
User avatar
Jensensen
Posts: 3000
Joined: Tue 17. Oct 2006, 21:11
Location: auf der mlauer

Re: Css eines Artikels ändern

Post by Jensensen »

Auf Kategorieebene erhalte ich mittels:
template/inc_settings/template_default/something_ABC_XYZ.php

Code: Select all

<body id="testid1" class="blupp testclass1">
bei allen in ihr enthaltenen Artikel.

(allerdings habe ich die index.php an entscheidender stelle modifiziert, da ich nicht ewig eine neue _ID in den CSS berücksichtigen bzw mitschleppen will. ich habe den "ID-hinten-anfüg-Teil" entfernt. claus und ich hatten das Thema damals einmal aufgegriffen.)


Mit der Script-Korrektur von Knut
flip-flop wrote:...Der Vergleich mit !== false fehlt nur).

Code: Select all

if(strpos($content['all_keywords'], '*CSS-dark*') !== false) {
   $template_default['body']['class'] = 'dark level-';
   $content['all_keywords'] = str_replace('*CSS-dark*', '', $content['all_keywords']);
}
...
erhalte ich nun:

Code: Select all

<body id="testid1" class="dark level-1">
Demnach werden die Angaben in template_default/... überschrieben.
Warum wieder eine "-1" angehängt wird, verstehe ich im Moment noch nicht.


Aber offenbar eignet sich das Sript dazu, über Kategorien hinweg, gesteuert über einen bestimmten Keyword-Tag, einzelne Artikel zu manipulieren. Tricky.

Pepes Vorschlag, zusätzlich auch den Parent-Level beeinflussen zu können, scheint mir zudem sehr flexibel zu sein, entzieht sich aber meinem Vorstellungsvermögen und habe ich noch nicht ausprobiert. Dazu konnte ich claus damals bereits nicht mehr folgen.
{so_much} | Knick-Knack. | GitHub
Umlaute im URL sind meistens immer Kacke.
pepe
Posts: 3954
Joined: Mon 19. Jan 2004, 13:46

Re: Css eines Artikels ändern

Post by pepe »

Wenn ich z.B. die verschiedenen Haupteben einer umfangreichen Site mit verschiedenen "Leitfarben" ausrüsten will, damit der Besucher bereits an der Farbe merkt, in welchem Bereich er sich befindet, dann kann ich MEINE ;-) Lösung jetzt sehr gut nutzen, vorausgesetzt, der Layoutaufbau ist entsprechend vorbereitet.

Du willst bestimmte Kategorien 2spaltig statt 3 Spaltig ausführen.

Oder, du willst ParentLevel abhängig andere Headerbilder einbinden... ach, dir wird sicher was einfallen :-)

Solltest du einfach mal versuchen...
User avatar
Jensensen
Posts: 3000
Joined: Tue 17. Oct 2006, 21:11
Location: auf der mlauer

Re: Css eines Artikels ändern

Post by Jensensen »

Hab's ausprobiert: nun erhalte ich für alle Artikel gleichsam bspw.:

Code: Select all

<body id="testid1" class="parent-1 category-1">
<body id="testid3" class="parent-3 category-3">
usw.
wobei hier in der Sache nur die Klassen relevant sind, also parent-3 category-3.

Damit befinde ich mich aber wieder nur auf der Ebene einer Kategorie.
Wenn ich nur jeweils einen Artikel innerhalb einer Kategorie anlege, dann scheint mir das Script geeignet zu sein.


Aber das funktioniert auch mit den üblichen Bordmitteln.
pepe wrote:Wenn ich z.B. die verschiedenen Haupteben einer umfangreichen Site mit verschiedenen "Leitfarben" ausrüsten will, damit der Besucher bereits an der Farbe merkt, in welchem Bereich er sich befindet, dann ...
...mache ich das mit
/template/inc_settings/template_default/
0_start.php
1_media.php
2_seminare.php
3_konzept.php
4_referenzen.php
5_about.php
6_kontakt.php

So können in diesem Beispiel 7 verschiedene Bildschirmdarstellungen für alle Seiten in sieben Kategorien abgebildet werden.
Das lässt sich beliebig ausweiten.


/template/inc_script/frontend_init/disabled/inject_body_id.php
gibt's auch noch.


Innerhalb einer Darstellungssituation für eine bestimmte Ebene erscheint mir die Lösung auf der Basis eines Keyword-Tags besser geeignet, um damit gezielt nur einen einzelnen von mehreren Artikeln innerhalb einer Kategorie manipulieren zu können.
{so_much} | Knick-Knack. | GitHub
Umlaute im URL sind meistens immer Kacke.
pepe
Posts: 3954
Joined: Mon 19. Jan 2004, 13:46

Re: Css eines Artikels ändern

Post by pepe »

Dann hast du das noch nicht richtig verstanden :!: Oder ich habs nicht klar genug gemacht ;-)

Das ganze wird doch erst dann Interessant, wenn du unterhalb dieser 1. Ebene eine oder mehrere Unterebenen hast... erst dann werden die Werte unterschiedlich sein!

parent-X bleibt dann für eine vertikale Ebenengruppe identisch
category-Z wird aber individuell sein

Erst dann wird das verständlich und macht auch Sinn. Funktioniert so wie der LevelLift bei der NAV_LIST_UL
Wenn du also z.B. hast:

0_start
1_media
2_seminare 0
+---7_seminar 1
+---8_seminar 2
+---9_seminar 3

3_konzept
4_referenzen
5_about
6_kontakt

Dann gilt folgendes:

2_seminar 0 = parent-2 | category-2
7_seminar 1 = parent-2 | category-7
8_seminar 2 = parent-2 | category-8
9_seminar 3 = parent-2 | category-9
User avatar
Jensensen
Posts: 3000
Joined: Tue 17. Oct 2006, 21:11
Location: auf der mlauer

Re: Css eines Artikels ändern

Post by Jensensen »

parent-2 | category-8 soweit ok. Aber weiterhin werden damit komplette Ebenen berücksichtigt. Alle darin enthaltenen Artikel erhalten den gleichen Code. Genau diese Funktion ist durch die custom templates für beliebige Ebenen möglich, also ohne Script. Hinzu kommt, dass dieses Script den "eingebauten" Mechnanismus komplett aushebelt und ggf. bereits die in custom templates definierten IDs und Klassen ausschaltet. Ist also irgend wie doppeltgemoppelt. Das Anhängen der ID ist in meinen Augen zudem überflüssig bzw. erhöht u.U. den Aufwand bei der Steuerung über CSS.


Vor allem aber ist im Sinne der Fragestellung eine Abweichung bzw. Steuerung nur eines einzelnen Artikels aber nicht möglich. Genau hier setzt die Methode mittels Keyword an.
{so_much} | Knick-Knack. | GitHub
Umlaute im URL sind meistens immer Kacke.
pepe
Posts: 3954
Joined: Mon 19. Jan 2004, 13:46

Re: Css eines Artikels ändern

Post by pepe »

OK, meine Lösung kann nur category-weise unterscheiden und nicht artikel-weise ... da hast du nun recht.

Aber ich seh' es mal so:
Je mehr Tools sich in unserer Toolbox sammeln, um so flexibler können wir in der phpwcmsSandbox spielen :D
Post Reply