Page 1 of 2
Bild in Kopfzeile abhängig vom Artikel
Posted: Sun 5. Jun 2005, 17:31
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
Posted: Sun 5. Jun 2005, 21:29
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">';
}
?>
Posted: Mon 12. Dec 2005, 11:59
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...
Posted: Tue 13. Dec 2005, 09:39
by Pappnase
hallo das hier funzt nur auf strukturbasis!
für artikle nutze doch den contentpart text mit bild!
Posted: Tue 13. Dec 2005, 10:48
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...
Posted: Tue 13. Dec 2005, 11:22
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"

Posted: Tue 13. Dec 2005, 13:40
by Heiko H.
seufz
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...
Posted: Tue 13. Dec 2005, 14:01
by pepe
Tja Heiko,
da hast du leider
nicht recht

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...

Posted: Tue 13. Dec 2005, 16:39
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
Hello, i am new here ...
Posted: Tue 9. May 2006, 22:06
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
Frage zu Pepes Lösung??
Posted: Thu 8. Jun 2006, 21:27
by svl
Ich bin noch Anfänger, und verstehe die Vorgehensweise noch nicht ganz. Sorry, aber wo muss ich das Skript einfügen?

Posted: Thu 8. Jun 2006, 21:47
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

Bild wird nicht angezeigt
Posted: Thu 8. Jun 2006, 22:32
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>
Posted: Thu 8. Jun 2006, 22:59
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
Hallo Knut,
Posted: Thu 8. Jun 2006, 23:08
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