Support » Teemat ja mallit » Toinen sidebar pois single-sivuilta

  • Olen tässä tekemässä WordPressillä websivua ja törmäsin seuraavanlaiseen ongelmaan. Minulla on käytössäni kaksi sidebaria, oikealla ja vasemmalla, mutta haluaisin, että single-sivuilla näkyvissä olisi vain oikeanpuoleinen sidebar. Asiaa varmaankin vaikeuttaa, että molemmat sidebareissa ovat samassa sidebar.php-tiedostossa.

    Onko mitään keinoa jolla saisin tuon ihmeen toteutumaan?

Esillä 11 vastausta, 1 - 11 (kaikkiaan 11)
  • On. Pistä toisen sivupalkin rekisteröintikoodi !is_single()-ehtolauseen sisään.

    Thread Starter Korento

    (@korento)

    Hmm. Nyt en tainnut ymmärtää ihan oikein tai sitten selitin asian huonosti.

    Haluaisin siis, että se oikea sidebar näkyisi myös muilla sivuilla.

    Vai mihin tuo koodinpätkä oikein laitetaan? Olen kokeillut vähän joka paikkaan, mutta missään se ei toimi ainakaan oikein.

    Niin teet if is single -> hide sitten else koodilla normaali sivupalkin koodi (näkyy muualla). Vaatii PHP-taitoja, että voi väsätä koodin.

    if (!is_single()) { 
    register_sidebar();
    }

    Tämä siis sille sivupalkille, jonka pitää näkyä kaikkialla muualla paitsi yksittäisillä sivuilla.

    if (is_single()) { 
    register_sidebar();
    }

    Näin sille sivupalkille, jonka pitää näkyä vain yksittäisillä sivuilla.

    Toimiskohan noin? En ole kokeillut, mutta luulisin.

    Thread Starter Korento

    (@korento)

    Juu tunnen itseni totaalisen tyhmäksi, mutta kai se on ihan oikeutettua, sillä en ole ennen tätä koskaan käyttänyt php:tä. Jos tämänkin olisin tienny… Mutta noh…

    En vieläkään saanut tuota toimimaan, joten laitanpa tähän nämä koodit, joita tuosta teemasta löytyy niin jos voisitte sitten täsmentää mihin kohtaan nuo koodit pitäisi laittaa ja mitä näistä pitäisi poistaa. Nyt onnistun koko ajan tekemään jotain väärin ja pian ei koko sivusto toimi lainkaan.

    Sidebarejen koodit:

    <div id="sidebar-lt">
    	<ul>
    		<?php if ( !function_exists('dynamic_sidebar')
            	|| !dynamic_sidebar('Left Sidebar') ) : ?>
    		<?php endif; ?>
    	</ul>
    	</div>
    
    	<div id="sidebar-rt">
    	<ul>
    		<?php if ( !function_exists('dynamic_sidebar')
            	|| !dynamic_sidebar('Right Sidebar') ) : ?>
    		<?php endif; ?>
    
    <?php if ( !is_single('dynamic_sidebar')
            	|| !dynamic_sidebar('Right Sidebar') ) : ?>
    		<?php endif; ?>
    	</ul>
    	</div>

    Funktioissa olevat koodit:

    <?php
    
    if ( function_exists('register_sidebar') )
    	register_sidebar(array(
    	'name'=>'Left Sidebar',
            'before_widget' => '<li id="%1$s" class="widget %2$s">',
            'after_widget' => '</li>',
            'before_title' => '<div class="widget-title">',
            'after_title' => '</div>',
        ));
    
    if (function_exists('register_sidebar'))
    
    	register_sidebar(array(
    	'name'=>'Right Sidebar',
            'before_widget' => '<li id="%1$s" class="widget %2$s">',
            'after_widget' => '</li>',
            'before_title' => '<div class="widget-title">',
            'after_title' => '</div>',
        ));
    ?>

    Kiitos, että olette vastailleet!

    Kokeile tällä:

    <?php if (is_single()) { echo''; } else { echo 'SIVUPALKIN KOODILITANIA MUILLE SIVUILLE PAITSI SINGLELLE';} ?>

    Näyttää sivupalkin vain sivuilla, jotka eivät ole teemassa sinlge.php. En osaa sanoa onko tuo oikea koodi tähän tarkoitukseen, mutta ainakin linkit voi vaihtaa noin, jos haluaa esimerkiksi linkin vain tietylle sivutyypille muodossa Pikavippi ilmaiseksi ja muille sivuille vaikka muodossa Pikalaina ilmaiseksi.

    Ensinnäkin: jos PHP-osaamista ei löydy, päässet helpoimmalla kun käytät jotain sopivaa pluginia, esim. Custom Sidebars ajanee asian.

    <div id="sidebar-lt">
    	<ul>
    		<?php if ( !function_exists('dynamic_sidebar')
            	|| !dynamic_sidebar('Left Sidebar') ) : ?>
    		<?php endif; ?>
    	</ul>
    	</div>

    Tämä koodi laittaa vasemman sivupalkin sivuille. Jos sen ei pidä näkyä single-sivuilla, vaihdat tilalle tämän:

    <?php if (!is_single()) : ?>
    <div id="sidebar-lt">
    	<ul>
    		<?php if ( !function_exists('dynamic_sidebar')
            	|| !dynamic_sidebar('Left Sidebar') ) : ?>
    		<?php endif; ?>
    	</ul>
    	</div>
    <?php endif; ?>

    Nyt vasemman sivupalkin pitäisi näkyä vain single-sivuilla.

    Thread Starter Korento

    (@korento)

    Tuo viimeisin koodi toimi! Kiitoksia 🙂

    Thread Starter Korento

    (@korento)

    Heippa. Saavuin taas kyselemään asiaan liittyviä juttuja.
    Nyt päätimme, ettei tuo toinen sidebar saa näkyä kaikilla muillakaan sivuilla. Mitä tuohon koodiin pitäisi lisätä jos haluaisin, ettei tuo toinen näy myöskään esim sivulla ”palaute”?

    Olen kokeillut ties mitä elseifejä, mutta onnistuin vaa hävittämään tuon sidebarin jokaiselta pagelta.

    Palaute-sivulle voi tehdä oman pohjan eli templaten. Tällöin nappaat page.php:sta koodia ja poistat sieltä vain tarvittavat… esim. sidebar.

    Ohjeet kuinka tehdä oma template:

    http://codex.wordpress.org/Pages#A_Page_of_Posts_for_a_Custom_Post_Type

    <?php if (!is_single() && !is_page('Palaute')) : ?>
    <div id="sidebar-lt">
    	<ul>
    		<?php if ( !function_exists('dynamic_sidebar')
            	|| !dynamic_sidebar('Left Sidebar') ) : ?>
    		<?php endif; ?>
    	</ul>
    	</div>
    <?php endif; ?>

    Oliskohan jotain tuollaista – mutta tosiaan, jos monimutkaisempia virityksiä haluatte, se Custom Sidebars -plugini tai muu vastaava on ihan hyvä idea.

Esillä 11 vastausta, 1 - 11 (kaikkiaan 11)
  • The topic ‘Toinen sidebar pois single-sivuilta’ is closed to new replies.