Bild in Kopfzeile abhängig vom Artikel

Get help with installation and running phpwcms here. Please do not post bug reports or feature requests here.
zed
Posts: 25
Joined: Sun 5. Jun 2005, 17:25
Location: Basel/Zürich, Switzerland
Contact:

Bild in Kopfzeile abhängig vom Artikel

Post by zed »

Hallo

Ich möchte folgendes:

In der Kopfzeile hab ich jeweils nur ein bild das sich, vom jeweiligen Artikel abhängig, ändern soll. Der Rest des Layouts bleibt also immer gleich.
Wie löse ich die Geschichte am besten. Möchte nämlich nicht für jeden Artikel ein anderes Layout erstellen.

Besten Dank im Voraus

zed
Pappnase

Post by Pappnase »

hallo

http://www.phpwcms.de/forum/viewtopic.php?t=1817

Code: Select all

<?php 

switch($GLOBALS['content']['cat_id']) { 

 // BOF 1=Your cat with ID 1 
case 1: echo '<img src="img/head/my_img_1.jpg" alt="alt">'; break; 
 // EOF 

 // BOF 2=Your cat with ID 2 
case 2: echo '<img src="img/head/my_img_2.jpg" alt="alt">'; break; 
 // EOF 
// to be continued... 

default:    echo '<img src="img/head/my_def_img.jpg" alt="alt">'; 

} 

?>
User avatar
Heiko H.
Posts: 868
Joined: Thu 27. Oct 2005, 11:41
Location: Dresden
Contact:

Post by Heiko H. »

Hallo,

nach langem Suchen hab ich nichts so recht gefunden.
Wenn ich das richtig sehe, (hab's noch nicht probiert) dann zeigt o.g. Script, wenn definiert, das zur ID passende Bild, sonst "default" an. Das ist's schon fast was ich bräuchte, ABER ich habe zu den Artikeln "Unterartikel" etwa so:

Artikel 1
Artikel 1.1
Artikel 1.2

Artikel 2
Artikel 2.1

usw.

Es soll das zur Oberkategorie passende Bild auch bei den Unterkategorien angezeigt werden. Also so:
Artikel 1->Bild 1
Artikel 1.1 -> Bild 1
Artikel 1.2 -> Bild 1

Artikel 2 -> Bild 2
Artikel 2.1 -> Bild 2

usw.
Muss ich da zu jeder Kategorie einen "case" definieren, oder geht da eleganter?

Danke für eure Mühe...
Pappnase

Post by Pappnase »

hallo das hier funzt nur auf strukturbasis! :-)

für artikle nutze doch den contentpart text mit bild!
User avatar
Heiko H.
Posts: 868
Joined: Thu 27. Oct 2005, 11:41
Location: Dresden
Contact:

Post by Heiko H. »

NEIEN!!!

Da hab ich mich offensichtlich nicht verständlich ausgedrückt :(

Es soll ein anderes Headerbild bei jedem Menüpunkt des obersten Levels der Navigation angezeigt werden. Bei jedem Unterpunkt soll dann das gleiche Bild bleiben, eben so:

Level 1->Bild 1
Level 1.1 -> Bild 1
Level 1.2 -> Bild 1

Level 2 -> Bild 2
Level 2.1 -> Bild 2

usw.

Das würde ja bedeuten man müsste für jedes "Unterlevel" einen neuen Fall definieren, nicht ganz im Sinne eines CMS...

Hoffe mich besser ausgedrückt zu haben.

Ciao Heiko...
pepe
Posts: 3954
Joined: Mon 19. Jan 2004, 13:46

Post by pepe »

<?php
// Copyright 2004 by Manfred "pepe" Peperkorn
//
// Script gibt den Code aus {IMAGE:header/xxxxx.jpg}, basierend auf der vorhandenen CAT-ID.
// Verwendung nur einer Vorlage für alle Kategorien!
// In der Vorlage {PHP:scripts/header-image_switch.php} eingeben, anstelle von {IMAGE:header/xxxxx.gif}

// Prüfung der CAT-ID des "obersten" Levels der aktuellen Ebene
$check_id = $GLOBALS['content']['cat_id'];

while( $GLOBALS['content']['struct'][$check_id]['acat_struct'] > 0 ) {
$check_id = $GLOBALS['content']['struct'][$check_id]['acat_struct'];
}

switch($check_id) {


case 0: echo '{RANDOM:picture/random-header-home}'; break;
case 10: echo '{IMAGE:random-header-200/Bild1.jpg}'; break;
case 20: echo '{IMAGE:random-header-200/Bild2.jpg}'; break;

.
.
.

default: echo '{RANDOM:picture/random-header}'; // Vorgabe, wenn keine andere Zuweisung!

}
?>
Die Werte 0, 10, 20, etc. sind deine Cat IDs für die Hauptebenen, die du natürlich entsprechend eintragen kannst und mußt!
Gibst du keine keine passenden ein, wird die letzte Zeile abgearbeitet.

Du kannst hier sowohl einzelne Header mit IMAGE ansprechen als auch eine zufällige Reihe mit RANDOM!

Viel Spass beim "Spielen" :wink:
User avatar
Heiko H.
Posts: 868
Joined: Thu 27. Oct 2005, 11:41
Location: Dresden
Contact:

Post by Heiko H. »

seufz :cry:
keiner versteht mich...

Was der code macht ist mir völlig klar.
Bei den Unterebenen soll das gleiche Bild wie bei der dazu gehörigen Hauptebene erscheinen, was bei diesem code eine case-Anweisung pro Haupt- und Unterebene von Nöten macht. Was besonders nervig ist, wenn Unterebenen ständig wechseln, verschwinden oder dazukommen...
Deswegen meine Frage nach einer evtl. eleganteren Lösung.
Trotzdem Danke für eure Mühen...
pepe
Posts: 3954
Joined: Mon 19. Jan 2004, 13:46

Post by pepe »

Tja Heiko,

da hast du leider nicht recht :roll: Hier hast du die Mühe eben nicht :!:

Nur einmal die Bilder für die Hauptebenen festlegen... die ändern sich ja nicht sooo schnell... und dann kannst du zufügen was du willst... und zugucken, daß es geht... automatisch!

Also ich fand die Lösung schon so elegant, das ich sie bei mehreren sites verwende... und bei denen klappt das sogar.

Versuchs doch noch mal... 5 Minuten Arbeit, und dann ist Ruhe!


PS
Schick mir dann doch bitte deine elegantere Lösung, bei der das Script alles selber macht, werde es gerne verwenden... :wink:
cwenet
Posts: 159
Joined: Sat 24. Jul 2004, 10:21
Location: Lake Of Constance, Germany

Post by cwenet »

Hallo Heiko,

vielleicht hilft das hier:

Code: Select all

[PHP]
$id = $GLOBALS['content']['cat_id']; 

 $parent_id=$GLOBALS['content']['struct'][$id]['acat_struct']; 
 While ($parent_id<>0){ 
   $id=$parent_id; 
   $parent_id=$GLOBALS['content']['struct'][$id]['acat_struct']; 
 } 

 
switch($id) { 

// Für Ebene 0 
case 0:
$links = "bild0";
break;

// Für Ebene 1 
case 1:
$links = "bild1";
break;

// Für Ebene 2 
case 2:
$links = "bild2";
break;


default: 
$links = "defaultbild";
break;

}
echo $links;
[/PHP]
Christoph
egres
Posts: 1
Joined: Tue 9. May 2006, 21:32

Hello, i am new here ...

Post by egres »

... and I have a question to the struct levels in this older Thread.

Let's assume, that I have a site struktur like this:

- DE
-- Angebot
-- Kontakt
-- Support
--- Foo
- EN
-- Offers
-- Contact
-- Support
--- Foo

In this case the above-mentioned Solutions doesn't work, because
they catch up only the ID´s from DE and EN. This works fine, but I need
a different Header-Pict for the Sub categories, like Offers, Support and so on. In my Example the Page "Foo" will have the same pict like "Support".

Any Suggestion?

Cheers, Thomas
svl
Posts: 22
Joined: Sun 30. Apr 2006, 08:09

Frage zu Pepes Lösung??

Post by svl »

Ich bin noch Anfänger, und verstehe die Vorgehensweise noch nicht ganz. Sorry, aber wo muss ich das Skript einfügen? :?
pepe
Posts: 3954
Joined: Mon 19. Jan 2004, 13:46

Post by pepe »

@egres try this:
[PHP]
// Prüfung der CAT-ID der aktuellen Ebene
$check_id = $GLOBALS['content']['cat_id'];

switch($check_id) {
case 10: echo '{IMAGE:Bild1.jpg}'; break;
case 20: echo '{IMAGE:Bild2.jpg}'; break;
.
.
.
default: echo '{RANDOM:picture/random-header-images}'; // Vorgabe, wenn keine andere Zuweisung!

}
[/PHP]
@svl
Einfach an der Stelle in das template, an der du sonst die Headerbilder eingebunden hättest :idea:
svl
Posts: 22
Joined: Sun 30. Apr 2006, 08:09

Bild wird nicht angezeigt

Post by svl »

Hallo Pepe,

ich habe den oben abgebildeten Code in eine Tabellenzelle meiner html-Vorlage kopiert. Statt der Bilder wird aber nur der Code angezeigt. Du musst Geduld mit mir haben, php ist für mich ebenfalls ziemlich neu. Habe ich vielleicht irgendwelche überflüssigen Kommentarzeichen mit eingebunden?

Ich habe folgenden Code eingebunden:

<td width="180" height="120">
<!--Bild einfügen ******************************************************************-->

[php]
$check_id = $GLOBALS['content']['cat_id'];

while( $GLOBALS['content']['struct'][$check_id]['acat_struct'] > 0 ) {
$check_id = $GLOBALS['content']['struct'][$check_id]['acat_struct'];
}

switch($check_id) {


case 0: echo '{RANDOM:picture/random-header-home}'; break;
case 10: echo '{IMAGE:random-header-200/Bild1.jpg}'; break;
case 20: echo '{IMAGE:random-header-200/Bild2.jpg}'; break;
case 30: echo '{IMAGE:random-header-200/Bild3.jpg}'; break;
case 40: echo '{IMAGE:random-header-200/Bild4.jpg}'; break;
case 50: echo '{IMAGE:random-header-200/Bild5.jpg}'; break;
case 60: echo '{IMAGE:random-header-200/Bild6.jpg}'; break;
case 70: echo '{IMAGE:random-header-200/Bild7.jpg}'; break;
case 80: echo '{IMAGE:random-header-200/Bild8.jpg}'; break;
case 90: echo '{IMAGE:random-header-200/Bild9.jpg}'; break;



default: echo '{RANDOM:picture/random-header}'; // Vorgabe, wenn keine andere Zuweisung!

}
[/php]
</td>
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Post by flip-flop »

Hi,

dann schalte mal in der conf.inc.php das hier ein:

Code: Select all

$phpwcms["allow_cntPHP_rt"]   = 0; //allow PHP replacement tags and includes in content parts
Gruß Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
svl
Posts: 22
Joined: Sun 30. Apr 2006, 08:09

Hallo Knut,

Post by svl »

das war es nicht :?

Ich habe das ganze jetzt nocheinmal gemacht, der Code wird nun nicht mehr angezeigt - die Bilder aber auch nicht. Der php-code wird ausgeführt, denn ein "echo Hallo;" wird angezeigt.
In welchen Ordner müssen die Bilder?

Viele Grüße
Post Reply