Здравствуйте! Помогите решить проблему т…

801 31

Здравствуйте! Помогите решить проблему такого характера:
Мне нужно установить одну ссылку чтобы она показывалась только в определенной и никакой другой категории.
Спасибо!

Комментариев 31
  1. 1. Можно полпробовать внедрить в шаблон примерно такую конструкцию:

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $id = array(1,2,55); # Пишем ID категорий, в которых нужно показывать код
    if ( have_posts() ) { the_post(); rewind_posts(); }
    if ( in_category($id)) { код, который нужно выводить только в определенных категориях
    } else {
    код, который нужно выводить во всех остальных категориях
    }
    ?>

    2. Так же можно воспользоваться плагином Optional Content: http://n-wp.ru/4251

    Этот плагин позволяет создавать содержимое, которое будет выводиться при определенных условиях.

    • 1.Плагин работает только в статьях , а мне надо только в категории (рубрике)
      2. В какой файл и в какое место вставляется код:

      просто я не спец уж такой и надо бы все понять и разобраться во всем…, да и как правильно его оформить?!
      Спасибо!

      • Вставил вышеприведенную конструкцию php в конец файла index.php шаблона сайта в раздел футера и вообще сайт не грузится..
        Где ошибка и ка правильно его сделать?
        Вот так сделал:

        1
        2
        3
        4
        5
        6
        7
        8
        9
        <?php get_footer(); ?>

        <?php
        $id = array(7); # Пишем ID категорий, в которых нужно показывать код
        if ( have_posts() ) { the_post(); rewind_posts(); }
        if ( in_category($id)) { <a href='http://www.farosta.ru/'>Всероссийская дистанционная олимпиада</a>
        } else {
        }
        ?>
  2. Что-то я вас не пойму. archive.php – это файл архивов. Архивов по категориям, по датам, по авторам, по тегам. Например, у меня есть тема, в которой в этом файле прописано следующее:

    1
    2
    <?php if (is_category()) { ?>
    <p><?php printf(__('Записи категории &#8216;<span id="keyword"> %s </span>&#8217;', 'neutral'), single_cat_title('', false)); ?></p>

    Это условие, которое проверяет, отфильтрованы ли записи только по категории. Если да, то выводится название категории. Почему бы под описанием не вывести и вашу ссылку, указав дополнительное условие проверки категории? Получиться должно примерно так:

    1
    2
    3
    4
    5
    6
    <?php if (is_category()) { ?>
    <p><?php printf(__('Записи категории &#8216;<span id="keyword"> %s </span>&#8217;', ''), single_cat_title('', false)); ?></p>

    <?php if ( in_category(7) ) : ?>
    <a href='http://www.farosta.ru/'>Всероссийская дистанционная олимпиада</a>
    <?php endif; ?>
    • Кстати, как у вас в шаблоне архивов написано, я не знаю, но конструкция должна быть похожая. Посмотрите, найдите вывод постов из категории, вставьте в этот блок свою ссылку с условием.

      • Как найти вывод постов? Я не такой опытный и не программист и языков никаких не знаю просто чисто методом тыка и небольшого опыта действую…
        Если сможете помогите, но не в примерами своими(если можно) а на конкретно моем сайте…
        И как уже говорил мне надо продажную ссылку установить на конкретную старницу сайта, а это в моем случае корневая страница каталога под названием "raznoe" и не на каких других страницах мне ссылка не нужна….
        Наверное теперь я понятнее написал? Прошу помочь! У меня например по аналогии установлена ссылка только на главной странице, но она-то одна, а каталогов (рубрик много)….
        Вот и надо-то только чтобы ссылка выводилась только по ID каталога, а не во всех….
        Архивы вообще мне не нужны…
        Спасибо и извинения за мою тупость и назойливость, просто очень надо!!!

        • Выложите файл archive.php или скажите, откуда скачать тему оформления вашего блога.

          • Тема оформления: Тема и плагин к ней
            Хотя мне в архивве не надо, а надо только на странице Разное и только на этой странице
            Вот код afqkf category.php сейчас там стоит Вми предложенный код, но показывается ссылка во всех категориях, а надо только в одной

            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            23
            24
            25
            26
            27
            28
            29
            30
            31
            32
            33
            34
            35
            36
            37
            38
            39
            40
            41
            42
            43
            44
            45
            46
            47
            48
            49
            50
            51
            52
            53
            54
            55
            56
            57
            58
            59
            60
            61
            62
            63
            64
            65
            66
            67
            68
            69
            70
            71
            72
            73
            74
            75
            76
            77
            78
            79
            80
            81
            82
            83
            84
            85
            86
            87
            88
            89
            90
            91
            92
            93
            94
            95
            96
            97
            98
            99
            100
            101
            102
            103
            104
            105
            106
            107
            108
            109
            110
            111
            112
            113
            114
            115
            116
            117
            118
            119
            120
            121
            122
            123
            124
            125
            126
            127
            128
            <?php get_header(); ?>

            <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
            <?php if (is_category()) { ?>
            <h2 class="pagetitle">Содержимое рубрики "<?php echo single_cat_title(); ?>"</h2>
            <?php } ?>

            <div class="nav">
            <a href="<?php bloginfo('url'); ?>/">Главная</a> &raquo; <?php echo(get_category_parents($cat, TRUE, ' &raquo; ')); ?>
            </div>

            <?php if (get_categories('child_of='.$cat.'&hide_empty=0')) { ?>
            <h3>Подрубрики:</h3>
            <ul class="child-categories">
            <?php wp_list_categories('show_count=1&child_of='.$cat.'&hide_empty=0&title_li='); ?>
            </ul>
            <?php } else { ?>
            <?php
            $ID = $wp_query->posts[0]->ID;
            $postcat = get_the_category($ID);
            $cat = $postcat[0]->cat_ID;
            $parent = get_category($cat);
            ?>

            <?php if ($parent->parent) { ?>
            <h3>Соседние рубрики:</h3>
            <ul class="child-categories">
            <?php error_reporting(0); wp_list_categories ('show_count=1&child_of='.$parent->parent.'&exclude='.$cat.'&hide_empty=0&title_li='); ?>
            </ul>
            <?php } ?>
            <?php } ?>

            <?php
            $order = "&orderby=cost&order=DESC";
            $s2 = ' selected="selected"';
            if ($_POST['select'] == 'title') { $order = "&orderby=title&order=ASC"; $s1 = ' selected="selected"'; $s2 = ''; }
            if ($_POST['select'] == 'newest') { $order = "&orderby=cost&order=DESC"; $s2 = ' selected="selected"'; }
            if ($_POST['select'] == 'oldest') { $order = "&orderby=cost&order=ASC"; $s3 = ' selected="selected"'; $s2 = ''; }
            ?>

            <form method="post" id="order">
            Сортировка:
            <select name="select" onchange='this.form.submit()'>
            <option value="title"<?=$s1?>>По заголовку</option>
            <option value="newest"<?=$s2?>>Самые новые</option>
            <option value="oldest"<?=$s3?>>Самые старые</option>
            </select>
            </form>

            <div class="line"></div>

            <?php if (have_posts()) : ?>
            <?php $posts = query_posts($query_string . $order); ?>
            <?php while (have_posts()) : the_post(); ?>

            <div class="post">
            <h3><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h3>
            <div class="postmetadata"><?php the_time('d.m.Y') ?> | Автор: <a href="<?php bloginfo('url'); ?>/author/<?php the_author_login(); ?>/"><?php the_author() ?></a> | Рубрика: <?php the_category(', ') ?> | <?php comments_popup_link('Оставить комментарий', 'Комментариев: 1', 'Комментариев: %'); ?></div>
            <div class="entry">
            <?php the_excerpt(); ?>
            </div>
            </div>

            <?php endwhile; ?>

            <div class="navigation">
            <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } else { ?>
            <div class="alignleft"><?php next_posts_link('&laquo; Раньше') ?></div>
            <div class="alignright"><?php previous_posts_link('Позже &raquo;') ?></div>
            <?php } ?>
            </div>

            <?php else : ?>
            <h3>В данной рубрике нет статей.</h3>
            <?php endif; ?>

            <?php get_sidebar(); ?>
            <?php get_footer(); ?>
            <?php
            $id = array(7); # Пишем ID категорий, в которых нужно показывать код
            if ( in_category($id) ) : ?>
            <a href='http://www.farosta.ru/'>Всероссийская дистанционная олимпиада</a>
            <?php endif; ?>[cc lang="php"]
            archve.php
            [cc lang="php"]<?php get_header(); ?>

            <?php if (have_posts()) : ?>

            <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
            <?php if (is_day()) { ?>
            <h2 class="pagetitle">Архив за <?php the_time('j F , Y'); ?></h2>
            <?php } elseif (is_month()) { ?>
            <h2 class="pagetitle">Архив за <?php the_time('F Y'); ?></h2>
            <?php } elseif (is_year()) { ?>
            <h2 class="pagetitle">Архив за <?php the_time('Y'); ?></h2>
            <?php } elseif (is_author()) { ?>
            <h2 class="pagetitle">Архив автора</h2>
            <?php } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
            <h2 class="pagetitle">Архив</h2>
            <?php } ?>

            <?php while (have_posts()) : the_post(); ?>
            <div class="post">
            <h3><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h3>
            <div class="postmetadata"><?php the_time('d.m.Y') ?> | Автор: <a href="<?php bloginfo('url'); ?>/author/<?php the_author_login(); ?>/"><?php the_author() ?></a> | Рубрика: <?php the_category(', ') ?> | <?php comments_popup_link('Оставить комментарий', 'Комментариев: 1', 'Комментариев: %'); ?></div>
            <div class="entry">
            <?php the_excerpt(); ?>
            </div>
            </div>

            <?php endwhile; ?>

            <div class="navigation">
            <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } else { ?>
            <div class="alignleft"><?php next_posts_link('&laquo; Раньше') ?></div>
            <div class="alignright"><?php previous_posts_link('Позже &raquo;') ?></div>
            <?php } ?>
            </div>

            <?php else : ?>

            <h2>Не найдено</h2>
            <p>Извините, по вашему запросу ничего не найдено.</p>

            <?php endif; ?>

            <?php get_sidebar(); ?>
            <?php get_footer(); ?>
            • Вы определитесь, пожалуйста, где вам нужно вывести ссылку?
              Сначала вы писали, что вам нужно выводить ссылку только в определенной категории. Теперьо пишете, что вам нужно выводить ссылку только на странице Разное. Где ссылку-то эту нужно выводить?

              • Только на странице категории "разное".
                В общем в каждой категории должны быть разные ссылки не не дублироваться в категориях…
                Вроде так и писал..
                Вот например( не беру главную страницу):
                1.Категория-1 http://www.syte.com
                2.Категория-2 http://www.site-2.com
                и т.д. но каждая ссылка должна показываться только в своей категории, а не во всех сразу…
                Извините, просто Вы плохо поняли меня, а я не точно наверное пояснил…

  3. Условие для вывода ссылки в определенной категории выглядит так:

    1
    <?php if ( in_category('2') ) { echo ('тут должна быть ссылка'); } ?>

    2 – это ID нужной категории
    Это условие можно вставлять в single.php и archive.php.

    • Это почему-то не работает, а вот это :

      1
      2
      3
      <?php if ( in_category(7) ) : ?>
      <a href='http://www.farosta.ru/'>Всероссийская дистанционная олимпиада</a>
      <?php endif; ?>

      вставил и стало работать.

    • Уважаемый тиариус, подскажите, а какой код ( только полностью, а не просто кусочек, а то я не понимаю, бабаб совсем) нужно вставить в archive.php чтобы вставить ссылку в архив определенной даты?
      Спасибо заранее…

      • В вашем случае это будет выглядеть наверное так:

        1
        2
        3
        <?php if (is_date(тут должна быть дата, например 21-10-2010) ) : ?>
        <a href='http://www.farosta.ru/'>Всероссийская дистанционная олимпиада</a>
        <?php endif; ?>

        Подробнее: http://codex.wordpress.org/Conditional_Tags – начиная с пункта A Date Page.

        • Что-то не выходит по правильному не сортирует… если ставлю к примеру дату архива вот так

          1
          2
          3
          <?php if (is_date(25-06-2010) ) : ?>
          <a href='http://www.farosta.ru/'>Всероссийская дистанционная олимпиада</a>
          <?php endif; ?>

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

        • Функция is_date() не имеет параметров, поэтому срабатывает для любой даты. Можно получить запрошенную дату из параметров $wp_query:

          1
          2
          3
          4
          5
          6
          7
          <?php
          global $wp_query;
          $date = !empty($wp_query->query['day']) ? "{$wp_query->query['day']}-{$wp_query->query['monthnum']}-{$wp_query->query['year']}" : '';
          ?>
          <?php if ( $date == '25-06-2010' ) : ?>
          <a href='http://www.farosta.ru/'>Всероссийская дистанционная олимпиада</a>
          <?php endif; ?>
          • А как получить существующую дату, то есть так которая в день просмотра страницы, чтобы дата всегда соответствовала системной, ну например сегодня показывается на страница, а потом добавился еще контент в архив и страница сменилась и чтобы опять показывался на странице архива или категории за дату не когда публиковалась, а на сегодняшний день просмотра главной станицы категории или архива?

            Может не понятно объясняю, но просто по другому не получается.
            Заранее спасибо!

  4. Не работает.как надо… Мне надо к примеру на вот эту страницу: http://seonowik.ru/2010/06/
    или вот если нужно то на эту: http://seonowik.ru/2010/06/page/3/ и т.д. вот по такому приципу..
    А как указал Сергей Бирюков просто совсем ничего не показвает, т.е ссылка не выводится вообще

    • Я предположил, что речь идёт об архиве за день. Универсальный вариант может выглядеть так:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      <?php
      global $wp_query;
      $date = '';
      if ( !empty($wp_query->query['day']) )
      $date .= $wp_query->query['day'] . '-';
      if ( !empty($wp_query->query['monthnum']) )
      $date .= $wp_query->query['monthnum'] . '-';
      if ( !empty($wp_query->query['year']) )
      $date .= $wp_query->query['year'];
      ?>
      <?php if ( $date == '25-06-2010' ) : ?>
      <a href='http://www.farosta.ru/'>Всероссийская дистанционная олимпиада</a>
      <?php endif; ?>

      Проверил с архивами за день, месяц и год. Указывать дату для сравнения можно в одном из следующих форматов: 25-06-2010, 06-2010, 2010.

  5. Спасибо! Попробовал работает, но вот еще как такое сделать чтобы еще страница чтобы менялась?
    т.к у меня много материалов за один день и получается постранично, как реализовать… Ты гений я знаю что сможешь, а я просто чайник совсем еще…
    типа :
    http://sait.ru/data(rghbvthe там 2010/06/06/page/2/
    или
    http://seonowik.ru/2010/09/page/3/