• 18-08-2022, 22:28:14
    #1
            <?php
                footer_menu_walk($footer_menus,false);
                function footer_menu_walk($list=[],$children=false,$opt=[]){
                    foreach ($list AS $menu){
                        echo (!$children) ? '<div class="footblok">' : '';
                        echo '<a';
                        echo (!$children) ? ' style="padding-left:0px;color:white;"' : '';
                        if($menu["link"]!=''){
                            echo ' href="'.$menu["link"].'"';
                            echo ($menu["target"]) ? ' target="_blank"' : '';
                        }
                        echo '>';
                        echo (!$children) ? EOL.'<h3>' : '';
                        echo (!empty($menu["icon"])) ? '<i class="'.$menu["icon"].'" aria-hidden="true"></i>' : '';
                        echo $menu["title"];
                        echo (!$children) ? '</h3>'.EOL : '';
                        echo '</a>'.EOL;
                        ($menu["children"]) ? footer_menu_walk($menu["children"],true,$opt) : '';
                        echo (!$children) ? '</div>'.EOL : '';
                    }
                }
            ?>
    Merhaba böyle bir kod bloğu vardır fakat ben burada tamamen şunu yapmak istiyorum;

    <div class="col">
    <u>
    <li>XXX</li>
    <li>XXX</li>
    </u>
    </div>


    Şu şekil de bir tablo olması gerekmekte ama kod bloğunu yapamadım yapmaya çalıştığım kod bloğu;

                footer_menu_walk($footer_menus,false);
                function footer_menu_walk($list=[],$children=false,$opt=[]){
                    foreach ($list AS $menu){
                      echo (!$children) ? '<div class="col">'.EOL : '';
                      echo (!$children) ? '<div class="primary-btn">'.EOL : '';
                      echo $menu["title"];
                      echo (!$children) ? '</div>'.EOL : '';
                      echo (!$children) ? '<u>'.EOL : '';
                      echo ($children) ? '<li>' : '';
                      ($menu["children"]) ? footer_menu_walk($menu["children"],true,$opt) : '';
                      echo (!$menu["children"]) ? '</li>' : '';
                      echo (!$children) ? '</u>'.EOL : '';
                      echo (!$children) ? '</div>'.EOL : '';
                    }
                }
    Çıktısı;
           <div class="col">
    <div class="primary-btn">
    KULLANIŞLI LİNKLER</div>
    <u>
    Bize Ulaşın<li></li>Referanslar<li></li>Haber ve Duyurular<li></li>Blog'tan Yazılar<li></li>Bilgi Bankası<li></li>Lisans Doğrulama<li></li>Gizlilik Sözleşmesi<li></li>Hizmet Sözleşmesi<li></li></u>
    </div>
  • 19-08-2022, 14:21:21
    #2
    Mümkün olduğunca fonksiyonlar içerisinde echo, print gibi çıktı veren komutları kullanmayın. Satır sayısı arttıkça kontrol daha kolay kaybedilir, debug yapmak zorlaşır.
    Kodu şu şekilde düzenledim:
    <?php
    function footer_menu_walk($list=[],$children=false,$opt=[]){
        $string = (!$children ? '<div class="col">' : '') .  PHP_EOL;
        $string .= '<ul>'.PHP_EOL;
        foreach ($list AS $menu){
            $string .= '<li>'.PHP_EOL;
            $string .= $menu['title'] . PHP_EOL;
            if($menu['children'])
                $string .= footer_menu_walk($menu['children'], true);
            $string .= '</li>' . PHP_EOL;
        }
        $string .= '</ul>' . PHP_EOL;
        $string .= (!$children ? '</div>' : '') . PHP_EOL;
        return $string;
    }
    $footer_menus = [
        [
            'title' => 'Test 1', 'children'=> [['title'=>'Children 1', 'children'=>[]], ['title'=>'Children 2', 'children'=>[]]],
        ],
        [
            'title' => 'Test 2', 'children'=> [],
        ],
        [
            'title' => 'Test 3', 'children'=> [],
        ]
    ];
    echo footer_menu_walk($footer_menus, false);
    Output şu şekilde:
    <div class="col">
        <ul>
            <li>Test 1
                <ul>
                    <li>Children 1</li>
                    <li>Children 2</li>
                </ul>
            </li>
            <li>Test 2</li>
            <li>Test 3</li>
        </ul>
    </div>
    Ekran çıktısı ise:
  • 19-08-2022, 15:41:06
    #3
    fatihemre adlı üyeden alıntı: mesajı görüntüle
    Mümkün olduğunca fonksiyonlar içerisinde echo, print gibi çıktı veren komutları kullanmayın. Satır sayısı arttıkça kontrol daha kolay kaybedilir, debug yapmak zorlaşır.
    Kodu şu şekilde düzenledim:
    <?php
    function footer_menu_walk($list=[],$children=false,$opt=[]){
        $string = (!$children ? '<div class="col">' : '') .  PHP_EOL;
        $string .= '<ul>'.PHP_EOL;
        foreach ($list AS $menu){
            $string .= '<li>'.PHP_EOL;
            $string .= $menu['title'] . PHP_EOL;
            if($menu['children'])
                $string .= footer_menu_walk($menu['children'], true);
            $string .= '</li>' . PHP_EOL;
        }
        $string .= '</ul>' . PHP_EOL;
        $string .= (!$children ? '</div>' : '') . PHP_EOL;
        return $string;
    }
    $footer_menus = [
        [
            'title' => 'Test 1', 'children'=> [['title'=>'Children 1', 'children'=>[]], ['title'=>'Children 2', 'children'=>[]]],
        ],
        [
            'title' => 'Test 2', 'children'=> [],
        ],
        [
            'title' => 'Test 3', 'children'=> [],
        ]
    ];
    echo footer_menu_walk($footer_menus, false);
    Output şu şekilde:
    <div class="col">
        <ul>
            <li>Test 1
                <ul>
                    <li>Children 1</li>
                    <li>Children 2</li>
                </ul>
            </li>
            <li>Test 2</li>
            <li>Test 3</li>
        </ul>
    </div>
    Ekran çıktısı ise:
    Hocam teşekkürler uğraşmışsınız ama maalesef olmadı müsatitmisiniz anydesk ileteyim ?
  • 19-08-2022, 22:05:06
    #4
    Maalesef network ayarlarım uzak masaüstü programlarını kullanmaya müsait değil, aldığınız hatayı ya da daha fazla detayı paylaşırsanız buradan yardımcı olalım.
  • 20-08-2022, 12:32:51
    #5
    fatihemre adlı üyeden alıntı: mesajı görüntüle
    Maalesef network ayarlarım uzak masaüstü programlarını kullanmaya müsait değil, aldığınız hatayı ya da daha fazla detayı paylaşırsanız buradan yardımcı olalım.
    Merhaba,

    Şimdi ben wisecp teması geliştiriyorum ve wisecp burayı bu şekilde kodlamış ben şu şekilde yapmak istiyorum;

    Bu kodun orijinal hali şu şekilde;
                            <?php
                footer_menu_walk($footer_menus,false);
                function footer_menu_walk($list=[],$children=false,$opt=[]){
                    foreach ($list AS $menu){
                        echo (!$children) ? '<div class="footblok">' : '';
                        echo '<a';
                        echo (!$children) ? ' style="padding-left:0px;color:white;"' : '';
                        if($menu["link"]!=''){
                            echo ' href="'.$menu["link"].'"';
                            echo ($menu["target"]) ? ' target="_blank"' : '';
                        }
                        echo '>';
                        echo (!$children) ? EOL.'<h3 class="yazi">' : '';
                        echo (!empty($menu["icon"])) ? '<i class="'.$menu["icon"].'" aria-hidden="true"></i>' : '';
                        echo $menu["title"];
                        echo (!$children) ? '</h3>'.EOL : '';
                        echo '</a>'.EOL;
                        ($menu["children"]) ? footer_menu_walk($menu["children"],true,$opt) : '';
                        echo (!$children) ? '</div>'.EOL : '';
                    }
                }
                            ?>
    Gelen veri $menu üzerinden geliyor $menu'yu var_dump'a döktüğümüz zaman;
    array(13) {
    ["id"]=>
    string(2) "15"
    ["parent"]=>
    string(1) "0"
    ["type"]=>
    string(6) "footer"
    ["icon"]=>
    string(0) ""
    ["rank"]=>
    string(1) "0"
    ["target"]=>
    string(1) "0"
    ["status"]=>
    string(6) "active"
    ["page"]=>
    string(0) ""
    ["onlyCa"]=>
    string(1) "0"
    ["title"]=>
    string(20) "KULLANIŞLI LİNKLER"
    ["link"]=>
    string(18) "javascript:void 0;"
    ["extra"]=>
    array(0) {
    }
    ["children"]=>
    array(8) {
    [41]=>
    array(13) {
    ["id"]=>
    string(2) "41"
    ["parent"]=>
    string(2) "15"
    ["type"]=>
    string(6) "footer"
    ["icon"]=>
    NULL
    ["rank"]=>
    string(1) "0"
    ["target"]=>
    string(1) "0"
    ["status"]=>
    string(6) "active"
    ["page"]=>
    string(7) "contact"
    ["onlyCa"]=>
    string(1) "0"
    ["title"]=>
    string(13) "Bize Ulaşın"
    ["link"]=>
    string(41) "https://wisecp.egemenhosting.com/iletisim"
    ["extra"]=>
    array(0) {
    }
    ["children"]=>
    array(0) {
    }
    }
    [87]=>
    array(13) {
    ["id"]=>
    string(2) "87"
    ["parent"]=>
    string(2) "15"
    ["type"]=>
    string(6) "footer"
    ["icon"]=>
    NULL
    ["rank"]=>
    string(1) "1"
    ["target"]=>
    string(1) "0"
    ["status"]=>
    string(6) "active"
    ["page"]=>
    string(10) "references"
    ["onlyCa"]=>
    string(1) "0"
    ["title"]=>
    string(11) "Referanslar"
    ["link"]=>
    string(44) "https://wisecp.egemenhosting.com/referanslar"
    ["extra"]=>
    array(0) {
    }
    ["children"]=>
    array(0) {
    }
    }
    [88]=>
    array(13) {
    ["id"]=>
    string(2) "88"
    ["parent"]=>
    string(2) "15"
    ["type"]=>
    string(6) "footer"
    ["icon"]=>
    NULL
    ["rank"]=>
    string(1) "2"
    ["target"]=>
    string(1) "0"
    ["status"]=>
    string(6) "active"
    ["page"]=>
    string(4) "news"
    ["onlyCa"]=>
    string(1) "0"
    ["title"]=>
    string(18) "Haber ve Duyurular"
    ["link"]=>
    string(41) "https://wisecp.egemenhosting.com/haberler"
    ["extra"]=>
    array(0) {
    }
    ["children"]=>
    array(0) {
    }
    }
    [89]=>
    array(13) {
    ["id"]=>
    string(2) "89"
    ["parent"]=>
    string(2) "15"
    ["type"]=>
    string(6) "footer"
    ["icon"]=>
    NULL
    ["rank"]=>
    string(1) "3"
    ["target"]=>
    string(1) "0"
    ["status"]=>
    string(6) "active"
    ["page"]=>
    string(8) "articles"
    ["onlyCa"]=>
    string(1) "0"
    ["title"]=>
    string(17) "Blog'tan Yazılar"
    ["link"]=>
    string(40) "https://wisecp.egemenhosting.com/yazilar"
    ["extra"]=>
    array(0) {
    }
    ["children"]=>
    array(0) {
    }
    }
    [42]=>
    array(13) {
    ["id"]=>
    string(2) "42"
    ["parent"]=>
    string(2) "15"
    ["type"]=>
    string(6) "footer"
    ["icon"]=>
    NULL
    ["rank"]=>
    string(1) "4"
    ["target"]=>
    string(1) "0"
    ["status"]=>
    string(6) "active"
    ["page"]=>
    string(5) "kbase"
    ["onlyCa"]=>
    string(1) "0"
    ["title"]=>
    string(14) "Bilgi Bankası"
    ["link"]=>
    string(46) "https://wisecp.egemenhosting.com/bilgi-bankasi"
    ["extra"]=>
    array(0) {
    }
    ["children"]=>
    array(0) {
    }
    }
    [90]=>
    array(13) {
    ["id"]=>
    string(2) "90"
    ["parent"]=>
    string(2) "15"
    ["type"]=>
    string(6) "footer"
    ["icon"]=>
    NULL
    ["rank"]=>
    string(1) "5"
    ["target"]=>
    string(1) "0"
    ["status"]=>
    string(6) "active"
    ["page"]=>
    string(7) "license"
    ["onlyCa"]=>
    string(1) "0"
    ["title"]=>
    string(17) "Lisans Doğrulama"
    ["link"]=>
    string(47) "https://wisecp.egemenhosting.com/lisans-dogrula"
    ["extra"]=>
    array(0) {
    }
    ["children"]=>
    array(0) {
    }
    }
    [40]=>
    array(13) {
    ["id"]=>
    string(2) "40"
    ["parent"]=>
    string(2) "15"
    ["type"]=>
    string(6) "footer"
    ["icon"]=>
    NULL
    ["rank"]=>
    string(1) "6"
    ["target"]=>
    string(1) "0"
    ["status"]=>
    string(6) "active"
    ["page"]=>
    string(9) "contract2"
    ["onlyCa"]=>
    string(1) "0"
    ["title"]=>
    string(21) "Gizlilik Sözleşmesi"
    ["link"]=>
    string(77) "https://wisecp.egemenhosting.com/kisisel-veriler-ve-genel-gizlilik-sozlesmesi"
    ["extra"]=>
    array(0) {
    }
    ["children"]=>
    array(0) {
    }
    }
    [39]=>
    array(13) {
    ["id"]=>
    string(2) "39"
    ["parent"]=>
    string(2) "15"
    ["type"]=>
    string(6) "footer"
    ["icon"]=>
    NULL
    ["rank"]=>
    string(1) "7"
    ["target"]=>
    string(1) "0"
    ["status"]=>
    string(6) "active"
    ["page"]=>
    string(9) "contract1"
    ["onlyCa"]=>
    string(1) "0"
    ["title"]=>
    string(19) "Hizmet Sözleşmesi"
    ["link"]=>
    string(62) "https://wisecp.egemenhosting.com/hizmet-ve-kullanim-sozlesmesi"
    ["extra"]=>
    array(0) {
    }
    ["children"]=>
    array(0) {
    }
    }
    }
    }
    Şimdi burada bulunan en üstteki KULLANIŞLI LİNKLER ana başlık, altında bulunanlar ise ana başlığın çocukları yani böyle;

    Ben bunları şu şekilde ekrana yazdırmak istiyorum;
    <div class="col">
    <div class="primary-btn">KULLANIŞLI LİNKLER</div>
    <u>
    <li><a href="#">Bize Ulaşın</a></li>
    <li><a href="#">Referanslar</a></li>
    <li><a href="#">Haber ve Duyurular</a></li>
    <li><a href="#">Blog'tan Yazılar</a></li>
    <li><a href="#">Bilgi Bankası</a></li>
    ..
    ..
    ..
    </u>
    
    
    </div>
    Şeklinde ama bunu bir türlü başaramıyorum. Umarım anlatabilmişimdir umarım yardımcı olabilirsiniz.
  • 21-08-2022, 00:03:02
    #6
    Çok kabataslak yazdım ama test ettim. Aşağıdaki kod işinizi görür:

    function footer_menu_walk($list=[],$children=false,$opt=[]){
        $string = (!$children ? '<div class="col">' : '<ul>') .  PHP_EOL;
        foreach ($list AS $menu){
            if($menu['parent'] == '0') {
                $string .= '<div class="primary-btn">';
            } else {
                $string .= '<li>'.PHP_EOL;    
            }
            
            $string .= $menu['title'];
            if($menu['parent']== '0') {
                $string .= '</div>' . PHP_EOL;
            }
            if($menu['children'])
                $string .= footer_menu_walk($menu['children'], true);
            if($menu['parent'] != '0') {
                $string .= '</li>' . PHP_EOL;
            } 
            
        }
        $string .= (!$children ? '</div>' : '</ul>') . PHP_EOL;
        return $string;
    }
    echo footer_menu_walk($footer_menus,false);
  • 21-08-2022, 01:35:54
    #7
    fatihemre adlı üyeden alıntı: mesajı görüntüle
    Çok kabataslak yazdım ama test ettim. Aşağıdaki kod işinizi görür:

    function footer_menu_walk($list=[],$children=false,$opt=[]){
        $string = (!$children ? '<div class="col">' : '<ul>') .  PHP_EOL;
        foreach ($list AS $menu){
            if($menu['parent'] == '0') {
                $string .= '<div class="primary-btn">';
            } else {
                $string .= '<li>'.PHP_EOL;    
            }
            
            $string .= $menu['title'];
            if($menu['parent']== '0') {
                $string .= '</div>' . PHP_EOL;
            }
            if($menu['children'])
                $string .= footer_menu_walk($menu['children'], true);
            if($menu['parent'] != '0') {
                $string .= '</li>' . PHP_EOL;
            }
            
        }
        $string .= (!$children ? '</div>' : '</ul>') . PHP_EOL;
        return $string;
    }
    echo footer_menu_walk($footer_menus,false);
    Tek sefer de çalıştı çok teşekkürler fakat yeni bir kategori ve bu kategoriye ait çocuk eklediğim zaman işler karışıyor;

                <div class="col">
                  <div class="primary-btn">ARDA</div>
                    <ul>
                      <li>ASDSAD</li>
                    </ul>
                  <div class="primary-btn">KULLANIŞLI LİNKLER</div>
                    <ul>
                      <li>Bize Ulaşın</li>
                      <li>Referanslar</li>
                      <li>Haber ve Duyurular</li>
                      <li>Blog'tan Yazılar</li>
                      <li>Bilgi Bankası</li>
                      <li>Lisans Doğrulama</li>
                      <li>Gizlilik Sözleşmesi</li>
                      <li>Hizmet Sözleşmesi</li>
                  </ul>
                </div>
    Bu sizin yaptığınız sistemdeki çıktı olması gereken;

                <div class="col">
                  <div class="primary-btn">ARDA</div>
                    <ul>
                      <li>ASDSAD</li>
                    </ul>
                </div>
                <div class="col">
                  <div class="primary-btn">KULLANIŞLI LİNKLER</div>
                    <ul>
                      <li>Bize Ulaşın</li>
                      <li>Referanslar</li>
                      <li>Haber ve Duyurular</li>
                      <li>Blog'tan Yazılar</li>
                      <li>Bilgi Bankası</li>
                      <li>Lisans Doğrulama</li>
                      <li>Gizlilik Sözleşmesi</li>
                      <li>Hizmet Sözleşmesi</li>
                  </ul>
                </div>
    col taglarına dikkat edin hocam
  • 21-08-2022, 16:27:04
    #8
    Ufak bir değişiklik işinizi çözer:
    <?php 
    function footer_menu_walk($list=[],$children=false,$opt=[]){
        $string = ($children ? '<ul>' : '') .  PHP_EOL;
        foreach ($list AS $menu){
            $string .= (!$children ? '<div class="col">' : '') .  PHP_EOL;
            if($menu['parent'] == '0') {
                $string .= '<div class="primary-btn">';
            } else {
                $string .= '<li>';    
            }
             
            $string .= $menu['title'];
            if($menu['parent']== '0') {
                $string .= '</div>' . PHP_EOL;
            }
            if($menu['children'])
                $string .= footer_menu_walk($menu['children'], true);
            if($menu['parent'] != '0') {
                $string .= '</li>' . PHP_EOL;
            } 
            $string .= (!$children ? '</div>' : '') . PHP_EOL;     
        }
        $string .= (($children) ? '</ul>' : '').PHP_EOL;
        
        return $string;
    }
    echo footer_menu_walk($footer_menus,false);
  • 22-08-2022, 02:05:15
    #9
    fatihemre adlı üyeden alıntı: mesajı görüntüle
    Ufak bir değişiklik işinizi çözer:
    <?php
    function footer_menu_walk($list=[],$children=false,$opt=[]){
        $string = ($children ? '<ul>' : '') .  PHP_EOL;
        foreach ($list AS $menu){
            $string .= (!$children ? '<div class="col">' : '') .  PHP_EOL;
            if($menu['parent'] == '0') {
                $string .= '<div class="primary-btn">';
            } else {
                $string .= '<li>';    
            }
            
            $string .= $menu['title'];
            if($menu['parent']== '0') {
                $string .= '</div>' . PHP_EOL;
            }
            if($menu['children'])
                $string .= footer_menu_walk($menu['children'], true);
            if($menu['parent'] != '0') {
                $string .= '</li>' . PHP_EOL;
            }
            $string .= (!$children ? '</div>' : '') . PHP_EOL;    
        }
        $string .= (($children) ? '</ul>' : '').PHP_EOL;
        
        return $string;
    }
    echo footer_menu_walk($footer_menus,false);
    Çok teşekkür ederim tek sefer de çalıştı 2 soru sormak istiyorum eğer cevaplamak isterseniz;
    1-) Kodu yazdınız çok güzel ama bu kod nasıl çalışıyor?
    2-) Twitch'de yayın açtığınız zaman yayının tekrarını videolar kısmına yükler misiniz.