0

我有一个通过数据库中的类别运行的嵌套 foreach 循环。当用户查看一个类别时,会设置类别 ID,并且该菜单项将其类别设置为“活动”。

我遇到的问题是当用户查看子类别时,我仍然需要将其 PARENT 设置为活动状态。

// Run through category ID's and output info
            foreach ($GLOBALS['AKB_CLASS_HELPER']->tree->nodesByPid[$catid] as $rowid) {
                $row = $GLOBALS['AKB_CLASS_HELPER']->catsById[$rowid];

                //Check to see if user has access
                if (($accessible_cats !== false) && (!in_array($row['categoryid'],$accessible_cats)) && ($row['security'] == "private")) {
                    continue;
                }

                // If we're viewing a category, output "active" as a class in the menu
                if (isset($GLOBALS['CategoryId'])
                    && ($GLOBALS['CategoryId']) == $row['categoryid'])  {
                    $activeCat = "active";
                } else {
                    $activeCat = "";
                }

                //Pass through global variables
                $GLOBALS['Link'] = GetUrl('category', $row['categoryid']);
                $GLOBALS['Text'] = $GLOBALS['AKB_CLASS_TEMPLATE']->DisablePlaceholders(strip_tags($row['name']));
                $GLOBALS['Active'] = $activeCat;
                $output .= $GLOBALS['AKB_CLASS_TEMPLATE']->GetSnippet('CategoryRowCell');

                //If subcategories exist
                    if (isset($GLOBALS['AKB_CLASS_HELPER']->tree->nodesByPid[$rowid])
                        && is_array($GLOBALS['AKB_CLASS_HELPER']->tree->nodesByPid[$rowid])
                        && !empty($GLOBALS['AKB_CLASS_HELPER']->tree->nodesByPid[$rowid])) {

                        $output .= $GLOBALS['AKB_CLASS_TEMPLATE']->GetSnippet('CategoryGridHeaderSub');

                            //For every subcategory, output data
                            foreach ($GLOBALS['AKB_CLASS_HELPER']->tree->nodesByPid[$rowid] as $subrowid) {
                                $subrow = $GLOBALS['AKB_CLASS_HELPER']->catsById[$subrowid];

                                //Here's the part I can't get working. Need to output "active" to the PARENT id($row I believe)
                                if (isset($GLOBALS['CategoryId'])
                                    && ($GLOBALS['CategoryId']) == $subrow['categoryid'])  {
                                    $activeCat = "active";
                                } else {
                                    $activeCat = "";
                                }

                                //Set Global Variables
                                $GLOBALS['Link'] = GetUrl('category', $subrow['categoryid']);
                                $GLOBALS['Text'] = $GLOBALS['AKB_CLASS_TEMPLATE']->DisablePlaceholders(strip_tags($subrow['name']));
                                $GLOBALS['Active'] = $activeCat;

                                $output .= $GLOBALS['AKB_CLASS_TEMPLATE']->GetSnippet('CategoryRowCellSub');
                            }
                        }
                        $output .= $GLOBALS['AKB_CLASS_TEMPLATE']->GetSnippet('CategoryGridFooterSub');
            }

所以我需要弄清楚的部分是在嵌套的 foreach 循环中,我如何影响父 ID 或类似的东西。

查看父母时的当前输出(完美运行)

<li class="categoryItem active"><a href="#">Parent 1</a>
<ul class="categorySubList">
<li class="categorySubItem"><a class="categorylink" href="/categories/Parent+1/Subcategory+1/">Subcategory 1</a></li>
<li class="categorySubItem "><a class="categorylink" href="/categories/Parent+1/Subcategory+2/">Subcategory 2</a></li>
</ul>

查看孩子时的电流输出(不工作)

<li class="categoryItem"><a href="#">Parent 1</a><!--this list item needs to be active-->
<ul class="categorySubList">
<li class="categorySubItem active"><a class="categorylink" href="/categories/Parent+1/Subcategory+1/">Subcategory 1</a></li>
<li class="categorySubItem "><a class="categorylink" href="/categories/Parent+1/Subcategory+2/">Subcategory 2</a></li>
</ul>

4

0 回答 0