Поддержка Проблемы и решения Код динамической шапки

  • Здраствуйте. Я разбираюсь более-менее в html, css…но команды php для меня еще в новинку и вот что хочу узнать.

    Мне необходимо сделать динамическую шапку. Код изображения прописан в css а не в header.php. Поэтому вот какая задумка:

    создать header-2.php, header-3.php…..в каждом из этих файлов переписать соответсвующий индекс <div id=»header»>, а в самом css прописать естественно для каждого свою картинку.

    Хочу использовать код:
    <?php
    if (in_category(1) ) :
    get_header(‘1’);
    elseif (in_category(2) ) :
    get_header(‘2’);
    else :
    get_header();
    endif;
    ?>

    Код гласит: если категория 1 — шапку берем из header-1.php,если категория 2 — шапку берем из header-2.php, в остальных категориях использовать header.php

    Что делать если у меня 7 категорий — забыть за этот код?

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Можно не делать 7 хедеров, вместо этого написать одну функцию theme_slug_print_header() в файле functions.php, которая будет выводить ваш хедер

    function theme_slug_print_header() {
      if (in_category(1) ) : ?>
        <div id="header"> </div>
    
      <?php
      elseif (in_category(2) ) : ?>
    
      <?php
      endif;
    }

    Там уже не так страшно, что написано. В css картинка — это фон. А так обычно ссылку на img вставляют. <?php theme_slug_print_header(); ?>

    theme_slug_print_header() в файле functions.php, которая будет выводить ваш хедер

    Хорошее решение впринципе. Но можно подробнее объяснить как работает этот код в моем случаае для 7 категорий? Ведь в нем задан только 1 параметр if и 1 elseif

    Для своего варианта подискал решение:

    < ?php
     if (is_single('6')) {
     include(TEMPLATEPATH.'/header1.php');
     } elseif (is_single('5')) {
     include(TEMPLATEPATH.'/header2.php');
     } elseif (is_single('4')) {
     include(TEMPLATEPATH.'/header3.php');
     } else {
     include(TEMPLATEPATH.'/header.php');
     } ?>

    Но можно подробнее объяснить как работает этот код в моем случаае для 7 категорий? Ведь в нем задан только 1 параметр if и 1 elseif

    Это незаконченный вариант, можно дописать еще 5. Просто 1 функция лучше выглядит, т.к. вы не переписываете весь файл, а только нужную часть. Теперь, если вам захочется внести изменения в header, вам придется делать это во всех семи файлах, будут появляться ошибки, описки и т.д.

    Если нужно просто менять фон header’а, то создавать header.php, header-2.php и т.д. бред.

    В идеале это реализуется при помощи JavaScript, благо в классах тегов расписано предостаточно информации.

    Альтернативный вариант, что мешает написать, к примеру:

    <?php
    if(is_single(1)) $header_class = 'bg_1';
    elseif(is_single(5)) $header_class = 'bg_2';
    else $header_class = 'no_bg';
    ?>
    <div id="header" class="<?php echo $header_class; ?>">

    в css файле, соответственно, прописать для каждого класса индивидуальный background-image

    Аналогично можно на переменные повесить все что угодно, к примеру тот же src для <img />

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Код динамической шапки» закрыта для новых ответов.