Support » Themes » Bildeinblendung abhängig von der Kategorie

  • Hallo Leute

    ich habe content den ich mit unterschiedlichen Kategorien aufteile. Jede Categorie wird auf einer eigenen Page angezeigt.

    Nun möchte ich vor der Liste der jeweiligen Categorie Beiträgen ein Bild voran stellen. Die anzeige funzt auch schon nur welche Funktion muss ich nehmen um das zu realisieren. Ich hab das folgendermassen versucht:

    <DIV class="category-picture-container"><!-- #header-category-picture-container -->
    <?php 
    if     ( is_page( 'News' ) )  { echo '<IMG class="jeader-logo-image" src="http://localhost/stylelocator/wp-content/uploads/2016/08/banner_news.jpg"   alt="NEWS aus Brilon"  width="100%" height="auto">';;} 
    elseif ( is_page( 'Shops' ) ) { echo '<IMG class="jeader-logo-image" src="http://localhost/stylelocator/wp-content/uploads/2016/08/banner_stores.jpg" alt="SHOPS in Brilon" width="100%" height="auto">';}  
    else   {}   
    ?>

    Ohne Abfrage bekomme ich eine Anzeige, mit wird nichts angezeigt. Was mach ich da falsch?

    Für euer Hilfe wäre ich echt dankbar. Euer

    Hans-Dieter

    • Dieses Thema wurde geändert vor 3 Jahre, 11 Monaten von hdj-lange.
Ansicht von 1 Antwort (von insgesamt 1)
  • Bevor es Custom Post Types gab (also vor WordPress 3.0) war es üblich, Kategorien zu verwenden, um Inhalte auf bestimmten Seiten auszugeben. Leider ist das sehr fehleranfällig, gerade wenn du eine Website für Dritte erstellst, weil der Endanwender unter Garantie irgendwann vergisst, neuen Beiträgen Kategorien zuzuweisen. Glücklicherweise gibt es schon eine Weile Custom Post Types, die nicht nur anwenderfreundlicher sind, weil sie jeweils einen eigenen Menüeintrag im Backend haben; auch die Zuordnung kann getrost wegfallen. Zur Darstellung können wahlweise eigene Templates je Post Type verwendet werden, oder du nutzt get_post_type() in Verbindung mit einem if-Statement.

    Es ist aber nicht grundsätzlich verkehrt, Kategorien zu verwenden. Nutzt du zur Darstellung die Template-Hierarchie und gibst die Beiträge über category.php oder archive.php aus? In diesem Fall wäre keine zusätzliche Abfrage erforderlich, was die Performance verbessert. Außerdem fügt WordPress automatisch im body-Tag eine CSS-Klasse category-{Kategoriename} ein, die du in einem Child Theme oder Custom CSS verwenden könntest, z.B.:

    
    .category-news .pagetitle{ 
    background: url( 'news.png' ) no-repeat; 
    padding-left 30px;
    display: block;
    height: 50px;
    }
    

    Deinen Code könntest du grundsätzlich auch verwenden (wobei ich mich Frage, ob is_page() die optimale Wahl ist), allerdings ein wenig anders:

    
    if( is_page( 'News' ) )  { 
    echo '<IMG class="jeader-logo-image" src="http://localhost/stylelocator/wp-content/uploads/2016/08/banner_news.jpg" alt="NEWS aus Brilon"  width="100%" height="auto">';
    } 
    if( is_page( 'Shops' ) ) { 
    echo '<IMG class="jeader-logo-image" src="http://localhost/stylelocator/wp-content/uploads/2016/08/banner_stores.jpg" alt="SHOPS in Brilon" width="100%" height="auto">';
    }  
    

    (eleganter wäre IMHO, das Bild per CSS einzubinden und dort Höhe und Breite anzugeben)

    
    global $post;
    $name = $post->post_name;
    
    echo '<div class="logo-'.$name.'></div>';
    

    … und dann im Stylesheet

    
    .logo-news { 
    background: url( 'http://localhost/stylelocator/wp-content/uploads/2016/08/banner_news.jpg' ) no-repeat;
    width: 100%;
    height: auto;
    display: block;
    }
    .logo-shops {
    background: url( 
    'http://localhost/stylelocator/wp-content/uploads/2016/08/banner_stores.jpg') no-repeat;
    width: 100%;
    height: auto;
    display: block;
    

    Es gibt so viele Wege …

Ansicht von 1 Antwort (von insgesamt 1)
  • Das Thema „Bildeinblendung abhängig von der Kategorie“ ist für neue Antworten geschlossen.