Ещё один простой блог в интернете, одного из жителей Сызрани, который считает себя дизайнером, WEB-мастером и фотографом-любителем

просто блог

QR CODE для записиQR CODE для записи “Смена стиля WP в зависимости от рубрики”

Смена стиля WP в зависимости от рубрики

Написал маленькую функцию смены стилей в зависимости от рубрики. Хотя «написал» — сказано с натяжкой.

Если попутешествовать по раздела моего блога можно увидеть, что некоторые разделы приобретают свою «раскраску».
Так же и главная страница блога приобретает цвет в зависимости от рубрики последней записи.

От слова к действию

В файле шаблона, в хедер вставляем вот такой простенький код

<?php
$category = get_the_category(); 
$category = $category[0]->cat_name;

if ($category == "jQuery"){echo '<link rel="stylesheet" href="';bloginfo('template_url');echo'/jquery.css" type="text/css" media="all">';}
if ($category == "WordPress"){echo '<link rel="stylesheet" href="';bloginfo('template_url');echo'/wordpress.css" type="text/css" media="all">';}
?>

Объяснять думаю не имеет смысла и так всё ясно. Если будут вопросы, спрашивайте в комментариях.

Если у Вас не получается определить рубрику, то поможет простой код:

<?php
$category = get_the_category(); 
echo $category[0]->cat_name;
?>

Вставьте его в любом месте шаблона, например сразу после открывающего тега body.
Затем перейдите в нужную рубрику и Вам в верху страницы выведется название рубрики, которое необходимо вписать в код.

Усё! :-)

  1. Gara # link

    А как сделать тоже самое, но в зависимости от страниц?
    Что бы у каждой страницы можно было сделать свой css стиль…

  2. BaNru # link

    Для отдельной страницы, равно как и для отдельной записи можно через get_the_ID()
    Создаем сначала переменную для удобства в которую заносим ID записи

    $post_id = get_the_ID();

    Затем уже добавляем условие:

    if ($post_id == "999"){
    	echo '<link rel="stylesheet" href="';bloginfo('template_url');echo'/flowplayer.css" type="text/css" media="all">';
    }

    Если будешь добавлять в условие, то соответственно надо встраивать через elseif
    Вместо 999 разумеется ID записи. Посмотреть можно через

    echo "$post_id";

    Так же для отдельной страницы, можно сделать индивидуальный дизайн/верстку. Для этого создаешь в папке шаблонов файл nazvanie_faila.php, в нём создаешь нужный дизайн (в смысле шапку свою если надо, и прочее…смотри как другие файлы сделаны, например page.php). Затем на странице редактирования записи в админке в «Атрибуты страницы» выбираешь свой новосозданный шаблон. ВНИМАНИЕ, если там не появится шаблон с названием твоего файла, то возможно ты назвал его системным именем, возможно надо будет переименовать файл.

  3. Gara # link

    Да! Спасибо! Получилось!
    Кстати, в гугле я больше не нашел ни у кого, как это делается…
    Может стоит подробную статью написать про css и страницы? Вообще, вопросы разного графического оформления разных страниц в WP, как-то совершенно не проработаны…

  4. BaNru # link

    На здоровье :-)

    Кстати, в гугле я больше не нашел ни у кого, как это делается…

    Спасибо! Ну я и стараюсь писать то, чего нет. Не занимаюсь рерайтами. Разве что переводами иногда.

    Может стоит подробную статью написать про css и страницы?

    Я планировал продолжить эту тему…продолжение есть в Скрипт смены стиля пользователем в WP и не только, в черновиках весит ещё продолжение не дописанное, но так руки и не доходят дописать.

    Или ты про другое?!

    Вообще, вопросы разного графического оформления разных страниц в WP, как-то совершенно не проработаны…

    Какие? Если есть вопросы, то спрашивай. Если есть предложения какие-то по более обширной теме — то с удовольствием выслушаю.

  5. Gara # link

    Спасибо!
    Да, есть вопрос…
    Возможно ли прикрутить к странице «Рубрику» или «Метку»? Что бы название страницы тоже попала в список рубрик.
    Хочется, что бы в облаке меток (которое WP-Cumulus) крутились не только имена рубрик и меток записей, но и имена страниц…

  6. BaNru # link

    Возможно ли прикрутить к странице “Рубрику” или “Метку”? Что бы название страницы тоже попала в список рубрик.

    Думаю что такого нельзя или я этого способа не знаю. Ведь не просто так сделали разделение на страницы и рубрики. Хотя конечно можно всё, но заниматься я этим вопросом не буду, ибо нецелесообразно. Есть другой, более оптимальный способ — это в админке зайти в Дизайн -> Меню и создать своё меню, в которое можно поместить как страницу, так и запись.

    Хочется, что бы в облаке меток (которое WP-Cumulus) крутились не только имена рубрик и меток записей, но и имена страниц

    А смысл? Зачем смешивать мух с котлетами? Лучше вот на основе этой статьи сделать свой виджет. Может с помощью функции wp_get_recent_posts() можно попробовать и добавить, но я этим плагином (WP-Cumulus) не пользуюсь, поэтому подсказать не смогу. И вообще, я бы порекомендовал отказаться от этого плагина, ибо флеш уже пережиток прошлого, единственное где он еще имеет вес — это видео/аудио и игры.

  7. Gara # link

    Решено!
    Спасибо за участие в проблеме
    Решение простое до безобразия))) Плагин Simple Tags

  8. Антон Романов # link

    Спасибо! Очень полезно! А как сделать так, чтобы просто менялось название блога (то есть то, что выводит bloginfo и description в зависимости от того, на какой я странице?

    Заранее спасибо!

  9. BaNru # link

    Антон, для этого есть СЕО плагины. Я пользуюсь HeadSpace2

  10. css # link

    рррр… писала такое длинное обращение, и, на тебе, картинки выставила неверно (
    Напишу покороче. :)
    Помогите, пожалуйста, модифицировать Ваш замечательный код, чтоб зависимость была не от названия рубрики (они на русском), а от ярлыка родительской рубрики, с проверкой — не является ли эта рубрика первым родителем. Как-то так. У меня не получилось сделать это самостоятельно (
    Заранее спасибо!

  11. BaNru # link

    get_the_category()

    Проверка на родителя

    $category = get_the_category(); 
    $category = $category[0]->parent;
    if ($category == 0){} // Если равна нулю, значит родитель. Расширяется либо через !=, либо else (ваш КО)

    Получить ярлык, он же slug

    $category = get_the_category(); 
    $category = $category[0]->slug;

    Стоит обратить внимание на НОЛЬ — дело в том, что может быть несколько категорий у одной статьи и в данном случае мы берем только первую категорию, игнорируя остальные. Если надо и остальные проверять, то надо цикл делать.

  12. css # link

    Ага… Нет, вложенность будет линейная. Надеюсь. :)
    Спасибо! Но вот это:
    $category = get_the_category();
    $category = $category[0]->slug;
    Это же для текущей категории. Да? А как вывести ярлык именно родителя? То есть, как я это вижу по-человечески:
    Если это родитель, то переменная = ярлык рубрики, если — нет, то переменная = ярлык первого родителя. Так возможно?

  13. css # link

    Нет, неправильно я написала. Если это ПЕРВЫЙ родитель. Так, наверное, невозможно… :( А, если и возможно, то код наверняка сложный

  14. BaNru # link

    Как-то так

    $cat = get_the_category(); 
    $cat = $cat[0]->parent;
    if ($cat == 0){ //Тут мы видим что родитель и делаем как в статье
    	$category = get_the_category(); 
    	$category = $category[0]->slug;
    }else{ // если отлично от нуля, то значит это потомок
    	$category = get_the_category($cat); 
    	$category = $category[0]->slug;
    }
    
    if ($category == 'jQuery'){
    	echo 'jQuery';
    }elseif ($category == 'WordPress'){
    	echo 'WordPress';
    }else {
    	echo 'Скорее всего нет категории, например у страниц';
    }
  15. BaNru # link

    Вот так лучше условие

    if ($cat == 0){ //Тут мы видим что родитель и делаем как в статье
        $category = get_the_category(); 
        $category = $category[0]->slug;
    } elseif (is_int($cat)) { // если отлично от нуля, но при этом число, то значит это потомок
        $category = get_the_category($cat); 
        $category = $category[0]->slug;
    } else { // если не 0 (верхний уровень) и не число вообще, то скорее всего пусто
        $category = 'пусто';
    }
  16. css # link

    Ух ты!… Но, скорее всего, я недопоняла, совсем уж тупка в программировании. Вот, я в футер вставила такое:

    slug;
    } elseif (is_int($cat)) { // если отлично от нуля, но при этом число, то значит это потомок
        $category = get_the_category($cat); 
        $category = $category[0]->slug;
    } else { // если не 0 (верхний уровень) и не число вообще, то скорее всего пусто
        $category = 'пусто';
    }
    
    if ($category == 'wood'){
        echo 'wood';
    }elseif ($category == 'wood1'){
        echo 'wood1';
    }else {
        echo 'Скорее всего нет категории, например у страниц';
    }
    ?>

    Захожу в категорию wood, пишет: нет категории, захожу в wood\wood1, пишет: нет категории.

  17. BaNru # link
    $cat = get_the_category(); 
    $cat = $cat[0]->parent;
    
    if ($cat == 0){
        $category = get_the_category(); 
        $category = $category[0]->slug;
    } else { // отказался от дополнительной проверки по многим причинам
        $category = get_category($cat); 
        $category = $category->slug;
    }

    Проверил, работает. Только обязательно — рубрика не должна быть пустая, в ней должна быть запись.
    Если будут ошибки, обращайся.

  18. css # link

    Вроде, работет. По крайней мере, в футер выводится нужная инфа. Я неделю уже мучаюсь, а Вы так быстро всё решили! Восторгу моему нет предела! Спасибо! Огромное, преогромное! :))

Оставить комментарий

В блоге включена ручная модерация комментариев. Нет смысла повторно отправлять комментарий.
Поля отмеченный звездочкой * обязательны к заполнению

Перед отправкой формы: