• 16-12-2016, 19:40:30
    #1
    Merhabalar,

    Wordpress sitem için bir shortcode oluşturuyorum ancak bu koddaki bazı değerler boş bırakıldığında o alan ile ilgili html kodlarının da çağrılmamasını yada görünmemesini nasıl sağlarım bilmiyorum. Bu konuda yardım bekliyorum.

    Hazırladığım kod: (http://prntscr.com/dk8ena)
    function bt_linkbox( $atts, $content = null ) {
    extract(shortcode_atts(
        array(
        	"tur"  => '',
            "link"  => '',
            "img"  => '',
            'gelistirici' => '',
            'fiyat' => '',
            'boyut' => '',
        ), $atts));
        return '
        <div class="bt-linkbox-'.$tur.'">
        	<div class="bt-linkbox-img"><img src="'.$img.'" alt=""></div>
        	<div class="bt-linkbox-sol">
        		<div class="bt-linkbox-baslikic">'.$content.'</div>
        		<div class="bt-linkbox-detay">
        			<div class="bt-linkbox-gelistirici">Gelistirici:'.$gelistirici.'</div>
        			<div class="bt-linkbox-fiyat">Fiyat:'.$fiyat.'</div>
        			<div class="bt-linkbox-boyut">Boyut:'.$boyut.'</div>
        		</div>
        	</div>
        	<div class="bt-linkbox-link-'.$tur.'">İndir / Yükle ▼<br><a href="'.$link.'">Steam Store</a></div>
        </div>';
    }
    add_shortcode( 'linkbox', 'bt_linkbox' );
    Kodun kullanım şekli:
    [linkbox tur=steam link=baglanti img=gorsel fiyat=fiyati boyut=boyutu gelistirici=firma]İCERİK[/linkbox]

    Burada Geliştirici, Boyut veya Fiyat alanları kullanılmadığında alttaki alanlarında aktif olmaması gerekiyor;

    Geliştirici:
    <div class="bt-linkbox-gelistirici">Gelistirici:'.$gelistirici.'</div>
    Fiyat:
    <div class="bt-linkbox-fiyat">Fiyat:'.$fiyat.'</div>
    Boyut:
    <div class="bt-linkbox-boyut">Boyut:'.$boyut.'</div>
    Belirtilen değerler olmadığında karşılığı boş olarak ekrana yazılıyor ve bu hoş olmuyor, bu yüzden değer olmadığında gizlemek niyetindeyim. Bunu nasıl sağlayabilirim?

    Şimdiden teşekkürler.
  • 17-12-2016, 00:16:30
    #2
    SkyGhostAir adlı üyeden alıntı: mesajı görüntüle
    Merhabalar,

    Wordpress sitem için bir shortcode oluşturuyorum ancak bu koddaki bazı değerler boş bırakıldığında o alan ile ilgili html kodlarının da çağrılmamasını yada görünmemesini nasıl sağlarım bilmiyorum. Bu konuda yardım bekliyorum.

    Hazırladığım kod: (http://prntscr.com/dk8ena)
    function bt_linkbox( $atts, $content = null ) {
    extract(shortcode_atts(
        array(
        	"tur"  => '',
            "link"  => '',
            "img"  => '',
            'gelistirici' => '',
            'fiyat' => '',
            'boyut' => '',
        ), $atts));
        return '
        <div class="bt-linkbox-'.$tur.'">
        	<div class="bt-linkbox-img"><img src="'.$img.'" alt=""></div>
        	<div class="bt-linkbox-sol">
        		<div class="bt-linkbox-baslikic">'.$content.'</div>
        		<div class="bt-linkbox-detay">
        			<div class="bt-linkbox-gelistirici">Gelistirici:'.$gelistirici.'</div>
        			<div class="bt-linkbox-fiyat">Fiyat:'.$fiyat.'</div>
        			<div class="bt-linkbox-boyut">Boyut:'.$boyut.'</div>
        		</div>
        	</div>
        	<div class="bt-linkbox-link-'.$tur.'">İndir / Yükle ▼<br><a href="'.$link.'">Steam Store</a></div>
        </div>';
    }
    add_shortcode( 'linkbox', 'bt_linkbox' );
    Kodun kullanım şekli:
    [linkbox tur=steam link=baglanti img=gorsel fiyat=fiyati boyut=boyutu gelistirici=firma]İCERİK[/linkbox]

    Burada Geliştirici, Boyut veya Fiyat alanları kullanılmadığında alttaki alanlarında aktif olmaması gerekiyor;

    Geliştirici:
    <div class="bt-linkbox-gelistirici">Gelistirici:'.$gelistirici.'</div>
    Fiyat:
    <div class="bt-linkbox-fiyat">Fiyat:'.$fiyat.'</div>
    Boyut:
    <div class="bt-linkbox-boyut">Boyut:'.$boyut.'</div>
    Belirtilen değerler olmadığında karşılığı boş olarak ekrana yazılıyor ve bu hoş olmuyor, bu yüzden değer olmadığında gizlemek niyetindeyim. Bunu nasıl sağlayabilirim?

    Şimdiden teşekkürler.
    function bt_linkbox( $atts, $content = null ) {
    extract(shortcode_atts(
        array(
        	"tur"  => '',
            "link"  => '',
            "img"  => '',
            'gelistirici' => '',
            'fiyat' => '',
            'boyut' => '',
        ), $atts));
    if($gelistirici) $gelistirici_kodlar="<div class=\"bt-linkbox-gelistirici\">Gelistirici:".$gelistirici."</div>";
    if(!$gelistirici) $gelistirici_kodlar="yok";
    if($fiyat) $fiyat_kodlar="<div class=\"bt-linkbox-fiyat\">Fiyat:".$fiyat."</div>";
    if(!$fiyat) $fiyat_kodlar="yok";
    if($boyut) $boyut_kodlar="<div class=\"bt-linkbox-boyut\">Boyut:".$boyut."</div>";
    if(!$boyut) $boyut_kodlar="yok";
        return '
        <div class="bt-linkbox-'.$tur.'">
        	<div class="bt-linkbox-img"><img src="'.$img.'" alt=""></div>
        	<div class="bt-linkbox-sol">
        		<div class="bt-linkbox-baslikic">'.$content.'</div>
        		<div class="bt-linkbox-detay">
        			'.$gelistirici_kodlar.'
        			'.$fiyat_kodlar.'
        			'.$boyut_kodlar.'
        		</div>
        	</div>
        	<div class="bt-linkbox-link-'.$tur.'">İndir / Yükle ▼<br><a href="'.$link.'">Steam Store</a></div>
        </div>';
    }
    add_shortcode( 'linkbox', 'bt_linkbox' );
    Bu şekilde olması lazım.

    denemedim.
  • 17-12-2016, 00:31:22
    #3
    Şöyle yapabilirsiniz:

     
    <?php $fiyat = get_post_meta($post->ID, 'fiyat', true);
    	if ($fiyat) {
    echo '<div class="bt-linkbox-fiyat">Fiyat:'.$fiyat.' </div>'; } ?>
  • 17-12-2016, 00:56:50
    #4
    FSahin adlı üyeden alıntı: mesajı görüntüle
    Şöyle yapabilirsiniz:

     
    <?php $fiyat = get_post_meta($post->ID, 'fiyat', true);
    	if ($fiyat) {
    echo '<div class="bt-linkbox-fiyat">Fiyat:'.$fiyat.' </div>'; } ?>
    Teşekkürler ancak bu şekilde olduğunda hata alıyorum, "xxx sayfası çalışmıyor" hatası veriyor tarayıcı.

    chedmade adlı üyeden alıntı: mesajı görüntüle
    function bt_linkbox( $atts, $content = null ) {
    extract(shortcode_atts(
        array(
        	"tur"  => '',
            "link"  => '',
            "img"  => '',
            'gelistirici' => '',
            'fiyat' => '',
            'boyut' => '',
        ), $atts));
    if($gelistirici) $gelistirici_kodlar="<div class=\"bt-linkbox-gelistirici\">Gelistirici:".$gelistirici."</div>";
    if(!$gelistirici) $gelistirici_kodlar="yok";
    if($fiyat) $fiyat_kodlar="<div class=\"bt-linkbox-fiyat\">Fiyat:".$fiyat."</div>";
    if(!$fiyat) $fiyat_kodlar="yok";
    if($boyut) $boyut_kodlar="<div class=\"bt-linkbox-boyut\">Boyut:".$boyut."</div>";
    if(!$boyut) $boyut_kodlar="yok";
        return '
        <div class="bt-linkbox-'.$tur.'">
        	<div class="bt-linkbox-img"><img src="'.$img.'" alt=""></div>
        	<div class="bt-linkbox-sol">
        		<div class="bt-linkbox-baslikic">'.$content.'</div>
        		<div class="bt-linkbox-detay">
        			'.$gelistirici_kodlar.'
        			'.$fiyat_kodlar.'
        			'.$boyut_kodlar.'
        		</div>
        	</div>
        	<div class="bt-linkbox-link-'.$tur.'">İndir / Yükle ▼<br><a href="'.$link.'">Steam Store</a></div>
        </div>';
    }
    add_shortcode( 'linkbox', 'bt_linkbox' );
    Bu şekilde olması lazım.

    denemedim.
    Bahsettiğiniz gibi yaptım istenildiği gibi çalışıyor, "yok" yazan alanları boşaltım sadece ve aynı işlemi img içinde uyguladım. Kodun son hali şu şekilde:
    function bt_linkbox( $atts, $content = null ) { 
    extract(shortcode_atts( 
        array( 
            "tur"  => '', 
            "link"  => '', 
            "img"  => '', 
            'gelistirici' => '', 
            'fiyat' => '', 
            'boyut' => '', 
        ), $atts)); 
    		if($img) $img_kodlar="<div class=\"bt-linkbox-img\"><img src=".$img." alt=\"logo\"></div> "; 
    		if(!$img) $img_kodlar="";
    		if($gelistirici) $gelistirici_kodlar="<div class=\"bt-linkbox-gelistirici\">Gelistirici:".$gelistirici."</div>"; 
    		if(!$gelistirici) $gelistirici_kodlar=""; 
    		if($fiyat) $fiyat_kodlar="<div class=\"bt-linkbox-fiyat\">Fiyat:".$fiyat."</div>"; 
    		if(!$fiyat) $fiyat_kodlar=""; 
    		if($boyut) $boyut_kodlar="<div class=\"bt-linkbox-boyut\">Boyut:".$boyut."</div>"; 
    		if(!$boyut) $boyut_kodlar=""; 
        return ' 
        <div class="bt-linkbox bt-linkbox-'.$tur.'"> 
           	'.$img_kodlar.' 
            <div class="bt-linkbox-sol"> 
                <div class="bt-linkbox-baslikic">'.$content.'</div> 
                <div class="bt-linkbox-detay"> 
                    '.$gelistirici_kodlar.' 
                    '.$fiyat_kodlar.' 
                    '.$boyut_kodlar.' 
                </div> 
            </div> 
            <div class="bt-linkbox-link bt-linkbox-link-'.$tur.'">İndir / Yükle ▼<br><a href="'.$link.'">Steam Store</a></div> 
        </div>'; 
    } 
    add_shortcode( 'linkbox', 'bt_linkbox' );
    Aynı zamanda WM aracındaki konuya da cevap gelmiş, oradaki cevapta aynı işlemi yapıyor ve ibr sıkıntı yok. Kod ise şu şekilde:
    function bt_linkbox( $atts, $content = null ) {
    extract(shortcode_atts(
        array(
            "tur"  => '',
            "link"  => '',
            "img"  => '',
            'gelistirici' => '',
            'fiyat' => '',
            'boyut' => '',
        ), $atts));
        $Yazdir[1] = '';
        $Yazdir[2] = '';
        $Yazdir[3] = '';
        $Yazdir[4] = '';
        if($img != '') $Yazdir[1] = '<div class="bt-linkbox-img"><img src="'.$img.'" alt=""></div>';
        if($gelistirici != '') $Yazdir[2] = '<div class="bt-linkbox-gelistirici">Gelistirici: '.$gelistirici.'</div>';
        if($fiyat != '') $Yazdir[3] = '<div class="bt-linkbox-fiyat">Fiyat: '.$fiyat.'</div>';
        if($boyut != '') $Yazdir[4] = '<div class="bt-linkbox-boyut">Boyut: '.$boyut.'</div>';
        return '
        <div class="bt-linkbox bt-linkbox-'.$tur.'">
            '.$Yazdir[1].'
            <div class="bt-linkbox-sol">
                <div class="bt-linkbox-baslikic">'.$content.'</div>
                <div class="bt-linkbox-detay">'.$Yazdir[2].$Yazdir[3].$Yazdir[4].'</div>
            </div>
            <div class="bt-linkbox-link bt-linkbox-link-'.$tur.'">İndir / Yükle ▼<br><a href="'.$link.'">Steam Store</a></div>
        </div>';
    }
    add_shortcode( 'linkbox', 'bt_linkbox' );
    Bir çözüm yolu ararken iki farklı çözüm üretilmiş oldu, bunların hangisini kullanmak kodlama temizliği ve stabilliği açısından daha iyi? Arada kayda değer bir fark var mı?

    Ayrıca daha basit bir sorum daha var. Değerlerde boşluk nasıl kullanacağız? Mesela gelistirici=DNZY Games yazdığımızda boşluktan sonrasını göstermiyor. gelistirici=DNZY-Games yazdığımızda görünüyor. - yerine ne yapmamız gerekiyor ki tam olarak gösterebilelim?

    Örnek tam kod:
    [linkbox tur=steam link=http://store.steampowered.com/app/429060/?snr=1_5_1100__1100 img=https://www.bozuktus.com/wp-content/uploads/2016/05/zombie-wars-invasion-android.png boyut=210MB fiyat=1,80TL(6,00TL) gelistirici=DNZY Games]Zombie Wars: Invasion[/linkbox]
    Görünüm: http://prntscr.com/dkbcqg

    Gördüğünüz gibi DNZY Games yazması gerekirken sadece DNZY yazıyor.
  • 17-12-2016, 01:43:28
    #5
    SkyGhostAir adlı üyeden alıntı: mesajı görüntüle
    Teşekkürler ancak bu şekilde olduğunda hata alıyorum, "xxx sayfası çalışmıyor" hatası veriyor tarayıcı.



    Bahsettiğiniz gibi yaptım istenildiği gibi çalışıyor, "yok" yazan alanları boşaltım sadece ve aynı işlemi img içinde uyguladım. Kodun son hali şu şekilde:
    function bt_linkbox( $atts, $content = null ) { 
    extract(shortcode_atts( 
        array( 
            "tur"  => '', 
            "link"  => '', 
            "img"  => '', 
            'gelistirici' => '', 
            'fiyat' => '', 
            'boyut' => '', 
        ), $atts)); 
    		if($img) $img_kodlar="<div class=\"bt-linkbox-img\"><img src=".$img." alt=\"logo\"></div> "; 
    		if(!$img) $img_kodlar="";
    		if($gelistirici) $gelistirici_kodlar="<div class=\"bt-linkbox-gelistirici\">Gelistirici:".$gelistirici."</div>"; 
    		if(!$gelistirici) $gelistirici_kodlar=""; 
    		if($fiyat) $fiyat_kodlar="<div class=\"bt-linkbox-fiyat\">Fiyat:".$fiyat."</div>"; 
    		if(!$fiyat) $fiyat_kodlar=""; 
    		if($boyut) $boyut_kodlar="<div class=\"bt-linkbox-boyut\">Boyut:".$boyut."</div>"; 
    		if(!$boyut) $boyut_kodlar=""; 
        return ' 
        <div class="bt-linkbox bt-linkbox-'.$tur.'"> 
           	'.$img_kodlar.' 
            <div class="bt-linkbox-sol"> 
                <div class="bt-linkbox-baslikic">'.$content.'</div> 
                <div class="bt-linkbox-detay"> 
                    '.$gelistirici_kodlar.' 
                    '.$fiyat_kodlar.' 
                    '.$boyut_kodlar.' 
                </div> 
            </div> 
            <div class="bt-linkbox-link bt-linkbox-link-'.$tur.'">İndir / Yükle <br><a href="'.$link.'">Steam Store</a></div> 
        </div>'; 
    } 
    add_shortcode( 'linkbox', 'bt_linkbox' );
    Aynı zamanda WM aracındaki konuya da cevap gelmiş, oradaki cevapta aynı işlemi yapıyor ve ibr sıkıntı yok. Kod ise şu şekilde:
    function bt_linkbox( $atts, $content = null ) {
    extract(shortcode_atts(
        array(
            "tur"  => '',
            "link"  => '',
            "img"  => '',
            'gelistirici' => '',
            'fiyat' => '',
            'boyut' => '',
        ), $atts));
        $Yazdir[1] = '';
        $Yazdir[2] = '';
        $Yazdir[3] = '';
        $Yazdir[4] = '';
        if($img != '') $Yazdir[1] = '<div class="bt-linkbox-img"><img src="'.$img.'" alt=""></div>';
        if($gelistirici != '') $Yazdir[2] = '<div class="bt-linkbox-gelistirici">Gelistirici: '.$gelistirici.'</div>';
        if($fiyat != '') $Yazdir[3] = '<div class="bt-linkbox-fiyat">Fiyat: '.$fiyat.'</div>';
        if($boyut != '') $Yazdir[4] = '<div class="bt-linkbox-boyut">Boyut: '.$boyut.'</div>';
        return '
        <div class="bt-linkbox bt-linkbox-'.$tur.'">
            '.$Yazdir[1].'
            <div class="bt-linkbox-sol">
                <div class="bt-linkbox-baslikic">'.$content.'</div>
                <div class="bt-linkbox-detay">'.$Yazdir[2].$Yazdir[3].$Yazdir[4].'</div>
            </div>
            <div class="bt-linkbox-link bt-linkbox-link-'.$tur.'">İndir / Yükle <br><a href="'.$link.'">Steam Store</a></div>
        </div>';
    }
    add_shortcode( 'linkbox', 'bt_linkbox' );
    Bir çözüm yolu ararken iki farklı çözüm üretilmiş oldu, bunların hangisini kullanmak kodlama temizliği ve stabilliği açısından daha iyi? Arada kayda değer bir fark var mı?

    Ayrıca daha basit bir sorum daha var. Değerlerde boşluk nasıl kullanacağız? Mesela gelistirici=DNZY Games yazdığımızda boşluktan sonrasını göstermiyor. gelistirici=DNZY-Games yazdığımızda görünüyor. - yerine ne yapmamız gerekiyor ki tam olarak gösterebilelim?

    Örnek tam kod:
    [linkbox tur=steam link=http://store.steampowered.com/app/429060/?snr=1_5_1100__1100 img=https://www.bozuktus.com/wp-content/uploads/2016/05/zombie-wars-invasion-android.png boyut=210MB fiyat=1,80TL(6,00TL) gelistirici=DNZY Games]Zombie Wars: Invasion[/linkbox]
    Görünüm: http://prntscr.com/dkbcqg

    Gördüğünüz gibi DNZY Games yazması gerekirken sadece DNZY yazıyor.

    gelistirici='DNZY Games' şeklinde denermisiniz
  • 17-12-2016, 11:40:18
    #6
    By_MiLaT adlı üyeden alıntı: mesajı görüntüle
    gelistirici='DNZY Games' şeklinde denermisiniz
    Oldu teşekkürler.

    Birde şu tür olayını ayarlayabilir isek kod kullanıma hazır olacak. tur=deger şeklinde shortcode tipini belirliyor, css'e göre ayarlayabildim ancak baglantı=deger kısmının olduğu yerdeki "Steam Store" bağlığını türe girilen değere göre değiştirmek lazım. Mesela tur=android olduğunda "Steam Store" yerine "Google Play Store" yazması gerekiyor, ya da tur=windows olduğunda "Windows Store" yazması gerekiyor. Bunun için belli bazı market isimleri var. Bunlara göre eğer buysa bu yazsın, şuysa şu yazsın şeklinde duyarlı bir kod nasıl ekleyebiliriz? Sadece buton içerisindeki yazıyı değiştirmek yeterli olacaktır.

    Bahsettiğim buton alanı:
    <div class="bt-linkbox-link bt-linkbox-link-'.$tur.'">İndir / Yükle ▼<br><a href="'.$link.'">Steam Store</a></div>
  • 17-12-2016, 14:44:15
    #7
    SkyGhostAir adlı üyeden alıntı: mesajı görüntüle
    Oldu teşekkürler.

    Birde şu tür olayını ayarlayabilir isek kod kullanıma hazır olacak. tur=deger şeklinde shortcode tipini belirliyor, css'e göre ayarlayabildim ancak baglantı=deger kısmının olduğu yerdeki "Steam Store" bağlığını türe girilen değere göre değiştirmek lazım. Mesela tur=android olduğunda "Steam Store" yerine "Google Play Store" yazması gerekiyor, ya da tur=windows olduğunda "Windows Store" yazması gerekiyor. Bunun için belli bazı market isimleri var. Bunlara göre eğer buysa bu yazsın, şuysa şu yazsın şeklinde duyarlı bir kod nasıl ekleyebiliriz? Sadece buton içerisindeki yazıyı değiştirmek yeterli olacaktır.

    Bahsettiğim buton alanı:
    <div class="bt-linkbox-link bt-linkbox-link-'.$tur.'">İndir / Yükle <br><a href="'.$link.'">Steam Store</a></div>
    şeklinde yapabilirsiniz
    if($tur=="windows"){
    $tur  = 'Windows Store';
    }elseif($tur=="android"){
    $tur  = 'Android Store';
    }else{
    $tur = 'Google Play Store';
    }
  • 17-12-2016, 15:31:42
    #8
    SkyGhostAir adlı üyeden alıntı: mesajı görüntüle
    Oldu teşekkürler.

    Birde şu tür olayını ayarlayabilir isek kod kullanıma hazır olacak. tur=deger şeklinde shortcode tipini belirliyor, css'e göre ayarlayabildim ancak baglantı=deger kısmının olduğu yerdeki "Steam Store" bağlığını türe girilen değere göre değiştirmek lazım. Mesela tur=android olduğunda "Steam Store" yerine "Google Play Store" yazması gerekiyor, ya da tur=windows olduğunda "Windows Store" yazması gerekiyor. Bunun için belli bazı market isimleri var. Bunlara göre eğer buysa bu yazsın, şuysa şu yazsın şeklinde duyarlı bir kod nasıl ekleyebiliriz? Sadece buton içerisindeki yazıyı değiştirmek yeterli olacaktır.

    Bahsettiğim buton alanı:
    <div class="bt-linkbox-link bt-linkbox-link-'.$tur.'">İndir / Yükle ▼<br><a href="'.$link.'">Steam Store</a></div>
    Aynı şekilde yapabilirsiniz.

    function bt_linkbox( $atts, $content = null ) { 
    extract(shortcode_atts( 
        array( 
            "tur"  => '', 
            "link"  => '', 
            "img"  => '', 
            'gelistirici' => '', 
            'fiyat' => '', 
            'boyut' => '', 
        ), $atts)); 
    if($gelistirici) $gelistirici_kodlar="<div class=\"bt-linkbox-gelistirici\">Gelistirici:".$gelistirici."</div>"; 
    if(!$gelistirici) $gelistirici_kodlar="yok"; 
    if($fiyat) $fiyat_kodlar="<div class=\"bt-linkbox-fiyat\">Fiyat:".$fiyat."</div>"; 
    if(!$fiyat) $fiyat_kodlar="yok"; 
    if($boyut) $boyut_kodlar="<div class=\"bt-linkbox-boyut\">Boyut:".$boyut."</div>"; 
    if(!$boyut) $boyut_kodlar="yok"; 
    if($tur=="android") $tur_kodlari="<div class=\"bt-linkbox-link-".$tur."\">İndir / Yükle ▼<br><a href=\"".$link."\">Steam Store</a></div>";
    if($tur=="windows") $tur_kodlari="<div class=\"bt-linkbox-link-".$tur."\">İndir / Yükle ▼<br><a href=\"".$link."\">Windows Store</a></div>";
        return ' 
        <div class="bt-linkbox-'.$tur.'"> 
            <div class="bt-linkbox-img"><img src="'.$img.'" alt=""></div> 
            <div class="bt-linkbox-sol"> 
                <div class="bt-linkbox-baslikic">'.$content.'</div> 
                <div class="bt-linkbox-detay"> 
                    '.$gelistirici_kodlar.' 
                    '.$fiyat_kodlar.' 
                    '.$boyut_kodlar.' 
                </div> 
            </div> 
            '.$tur_kodlari.' 
        </div>'; 
    } 
    add_shortcode( 'linkbox', 'bt_linkbox' );
  • 17-12-2016, 21:20:39
    #9
    Hepinize çok teşekkürler tam istediğim gibi oldu.