• Rozwiązano _Lukas

    (@_lukas)


    Jestem administratorem strony która nie posiada panelu administracyjnego. Chciałbym teraz podpiąć ją pod WordPress. I tutaj napotykam problem.

    Strona posiada 2 menu. Jedno, poziome na górze strony które jest stałe.

    Problem jest z menu pionowym. Chciałbym zrobić tak, że po wybraniu którejś pozycji z menu poziomego przenosiło mnie do podstrony kategorii a po lewej stronie w sidebar pojawiała się lista wpisów z danej kategorii.

    Wiem jak zrobić wyświetlanie wpisów tylko z jednej kategorii ale nie wiem jak uzależnić które wpisy mają być wyświetlane od wybranej kategorii.

    Byłbym wdzięczny za pomoc.

Zobacz 13 odpowiedzi - od 1 do 13 (z 13 łącznie)
  • Moderator amistad18

    (@amistad18)

    Domyślnie jak wchodzisz na stronę jakiejś kategorii, to się wyświetlają wpisy z tej kategorii, tylko zazwyczaj nie w sidebarze, a gdzieś na środku strony jako zajawki albo wypisy.

    Jeżeli wpisy mają być w sidebarze, to do czego Ci tak naprawdę strona kategorii i jej cały środek?

    Twórca wątku _Lukas

    (@_lukas)

    Lista wpisów. Nie precyzyjnie określiłem.

    Moderator amistad18

    (@amistad18)

    Nie ma znaczenia, edytując pliki szablonu można sobie wywalić funkcję the_content(), i też tak jakby będzie lista wpisów.

    Więc, wyjaśnij mi rolę jaką ma odgrywać strona kategorii, skoro w sidebarze mają się wyświetlać tytuły wpisów, a na środku … co?

    Twórca wątku _Lukas

    (@_lukas)

    procambio.pl

    Tutaj masz jak to wygląda w chwili obecnej. Klikasz na szkolenia, po lewej stronie pojawia Ci się menu, po prawej 3 wpisy. 🙂

    Moderator amistad18

    (@amistad18)

    W takim razie, aby się nie rozpisywać ponownie, zajrzyj tutaj:
    http://www.wordpress.org.pl/index.php?s=&showtopic=11324&view=findpost&p=36612

    Zamiast cat=-1 możesz dać cat=5 – wtedy będą się wyświetlały wpisy z kategorii o ID 5. Jedynym Twoim problemem w tym momencie będzie wyciągnięcie ID obecnie przeglądanej kategorii, ale myślę że znajdziesz jakąś funkcję WP albo prosty kod który Ci to zrobi, i wtedy tylko dasz np. cat='.$cat_id.' … proponuję w google takiego czegoś szukać, u mnie to zawsze działa 😉

    Acha, i od razu lekturka, poznaj niezliczone możliwości pętli w WP:
    http://codex.wordpress.org/Function_Reference/query_posts

    Twórca wątku _Lukas

    (@_lukas)

    <?php if ( is_category()) { $nr_cat = get_the_category(); query_posts('cat=$nr_cat'); if(have_posts()) : while(have_posts()): the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; endif; } else { query_posts('cat=1'); if(have_posts()) : while(have_posts()): the_post();?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; endif; } ?>

    Niestety wyświetla wszystkie wpisy.

    Moderator amistad18

    (@amistad18)

    Niestety inaczej być nie może, jak już pisałem, musisz znaleźć sposób na zdobycie ID obecnie wyświetlanej kategorii, ten Twój obecny niestety nie działa, zobacz dlaczego:

    http://codex.wordpress.org/Function_Reference/get_the_category

    Twórca wątku _Lukas

    (@_lukas)

    Nie działa dlatego że get_the_category zwraca tablice wyników ? Nie znasz sposobu by wzdobyc id kategori ?

    Moderator amistad18

    (@amistad18)

    Już pisałem wyżej że ja nie znam, nie pamiętam tego wszystkiego, od tego jest codex albo google – i w tym wypadku google przychodzi z pomocą, wystarczyło zapytać o 'wordpress get the id of current category’:

    http://www.whypad.com/posts/wordpress-get-category-id-while-on-a-category-page/669/

    Twórca wątku _Lukas

    (@_lukas)

    Ok 🙂 Dzięki wielkie.

    Edit. Nie działa.

    <?php function getCurrentCatID(){
    															  global $wp_query;
      															if (is_category() || is_single()){
    																$cat_ID = get_query_var('cat');
      																}
      															return $cat_ID;
    															 } ?>
    
    															<?php	if ( is_category()) {
    																		wp_reset_query();
    																		query_posts('cat=$cat_ID');
     																			if(have_posts()) : while(have_posts()): the_post(); ?>
    
    <li><a>"><?php the_title(); ?></a></li>
     																			<?php endwhile;
     																		endif;
    																		}
    																	else {
    																	  wp_reset_query();
    																		query_posts('cat=1');
     																		if(have_posts()) : while(have_posts()): the_post();?>
    
    <li><a>"><?php the_title(); ?></a></li>
     																		<?php endwhile;
     																		endif;
    																	}
    																	?>

    Moderator amistad18

    (@amistad18)

    Spróbuj tą funkcję zapisać do pliku functions.php, i w odpowiednim miejscu daj bodajże <?php echo getCurrentCatID(); ?>, albo bez echo – kombinuj.

    Twórca wątku _Lukas

    (@_lukas)

    Postaram się, ale to już jutro. 🙂 Dzięki za pomoc. Jak coś to będę pisał.

    Twórca wątku _Lukas

    (@_lukas)

    <?php	if ( is_category() || is_single()) {
      $nr_cat = get_the_category();
      wp_reset_query();
      query_posts('cat=' . $nr_cat[0]->cat_ID);
      if(have_posts()) : while(have_posts()): the_post(); ?>
        <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>    </li>
      <?php endwhile;
      endif;
      }
      else {
      wp_reset_query();
      query_posts('cat=1');
      if(have_posts()) : while(have_posts()): the_post();?>
      <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>  </li>
      <?php endwhile;
    endif; } ?>

    To działa poprawnie. WordPress 3.0.1 🙂 Jakby ktoś potrzebował.

Zobacz 13 odpowiedzi - od 1 do 13 (z 13 łącznie)

Temat ‘Problem z menu i wybranymi wpisami’ jest zamknięty na nowe odpowiedzi.