0

データベース内のカテゴリを実行するネストされた foreach ループがあります。ユーザーがカテゴリを表示すると、カテゴリ ID が設定され、そのメニュー項目のクラスが「アクティブ」に設定されます。

私が抱えている問題は、ユーザーがサブカテゴリを表示しているときです。親をアクティブに設定する必要があります。

// 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