Ik wil een aantal menu items uitladen uit het joomla cms zodat ze vanuit het cms te editen zijn.

Het gaat om deze list met menu items.

<?
<!-- <li class="<? if($pagina == 'home'){echo 'current'; } ?> relative f_xs_none m_xs_bottom_5"><a href="http://www.website.nl/"; class="tr_delay_hover color_light tt_uppercase"><b>Home</b></a></li> -->
<li class="relative f_xs_none m_xs_bottom_5"><a href="javascript:void()" onclick="javascript:goToURL('http://www.website.nl')"; class="tr_delay_hover color_light tt_uppercase"><b>Het bedrijf</b></a>
<!--sub menu-->
<div class="sub_menu_wrap top_arrow d_xs_none type_2 tr_all_hover clearfix r_corners">
<ul class="sub_menu">
<li><a class="color_dark tr_delay_hover" href="home/menu-item1">menu-item1</a></li>
<li><a class="color_dark tr_delay_hover" href="home/menu-item2">menu-item2</a></li>
<li><a class="color_dark tr_delay_hover" href="home/menu-item3">menu-item3</a></li>
<li><a class="color_dark tr_delay_hover" href="home/diensten/menu-item4">menu-item4</a></li>
<li><a class="color_dark tr_delay_hover" href="home/diensten/menu-item5">menu-item5</a></li>
<li><a class="color_dark tr_delay_hover" href="home/diensten/menu-item6">menu-item6</a></li>
en-route">Contact</a></li>
</ul>
</div>
</li>
?>

Dit is de query waarmee ik de menu items ophaal.

<?
// Het bedrijf
$bedrijf = "SELECT * FROM `lb_content` WHERE catid = 26 and state = 1";
$bedrijfcon = $conn->query($bedrijf);
$bedrijfcr = array();
while ($bedrijfcr[] = $bedrijfcon->fetch_array());
?>

Hoe kan ik dit uitlezen en netjes laten zien in een loop?


Ik heb zelf nog wat geprobeerd maar kom er niet echt uit.

<?
$arraylist = array();
foreach($bedrijfcr as $menu1){
if(!in_array($menu1['id'],$arraylist) && $menu1['id'] != ''){
$arraylist[] = $menu1['id'];

$menuitem1 =
'<li class="relative f_xs_none m_xs_bottom_5"><a href="http://www.website.nl"; class="tr_delay_hover color_light tt_uppercase"><b>'.$menu1['title'].'</b></a>
<div class="sub_menu_wrap top_arrow d_xs_none type_2 tr_all_hover clearfix r_corners">
<ul class="sub_menu">';

$sub1 = "SELECT * FROM `lb_content` WHERE catid = ".$menu1['id']." order by created DESC";
$subcon1 = $conn->query($sub1);
$subcr1 = array();
while ($subcr1[] = $subcon1->fetch_array());

}

$i = 1;

foreach($subcr1 as $submenu1){
$menuitem1 = '<li><a class="color_dark tr_delay_hover" href="'.GetSubNaam($submenu1['catid']).'/'.$submenu1['alias'].'">'.$submenu1['title'].'</a></li>';
}

$i++;

$menuitem1 = '</ul>
</div>
</li>';
}
return = $menuitem1;

?>
Dat gaf ik al eerder aan: het menu zal dan bijgewerkt moeten worden.

Vandaar mijn eerdere vraag/vragen: hoeveel werk is het eenmalig aanpassen van de menu('s), hoe vaak vindt het toevoegen van een artikel plaats?
Thomas van den Heuvel op 03/11/2015 14:48:17

Dat gaf ik al eerder aan: het menu zal dan bijgewerkt moeten worden.

Vandaar mijn eerdere vraag/vragen: hoeveel werk is het eenmalig aanpassen van de menu('s), hoe vaak vindt het toevoegen van een artikel plaats?


Vaak genoeg dat ik het op deze manier wil oplossen :P
Je was al een eind, en had het oorspronkelijke code-fragment uit kunnen breiden met mijn voorstel om te komen tot zoiets:
<?php
/*
- $arraylist wordt nergens echt gebruikt? verwijderd
- if-statement om te kijken of $menu1['id'] niet voorkomt verwijderd, is niet nodig?
- teller $i verwijderd, doet niets
*/

// waar start je je list met <ul> ?
foreach ($bedrijfcr as $menu1) {
    ?><li class="relative f_xs_none m_xs_bottom_5">
        <a href="http://www.website.nl" class="tr_delay_hover color_light tt_uppercase"><b><?php echo $menu1['title'] ?></b></a><?php

        $sub1    = 'SELECT * FROM lb_content WHERE catid = '.$menu1['id'].' order by created DESC';
        $subcon1 = $conn->query($sub1);
        $subcr1  = array();
        while ($subcr1[] = $subcon1->fetch_array());

        if (count($subcr1) > 0) {
            ?><div class="sub_menu_wrap top_arrow d_xs_none type_2 tr_all_hover clearfix r_corners">
                <ul class="sub_menu"><?php
                    // dubbele loop is niet heel erg efficient (while + daarna nog een x foreach) maar goed...
                    foreach ($subcr1 as $submenu1) {
                        ?><li><a class="color_dark tr_delay_hover" href="<?php echo GetSubNaam($submenu1['catid']) ?>/<?php echo $submenu1['alias'] ?>"><?php echo $submenu1['title'] ?></a></li><?php
                    }
                ?></ul>
            </div><?php
        }
    ?></li><?php
}
// waar sluit je je list af met </ul> ?        
?>

Je zult zelf moeten kijken of het resultaat HTML-technisch nog klopt. Als het bovenstaande ergens anders moet worden afgedrukt kun je eventueel van output buffering gebruik maken.

Reageren