Мне нужна помощь с настройкой Navigation.php в Magento. Я использую Superfish для создания верхней навигационной панели, в которой всегда будет открыта первая вкладка, если никакая другая вкладка не была выбрана (этот пример навигационной панели Superfish имеет вторую вкладку по умолчанию: http://users.tpg.com.au/j_birch/plugins/superfish/#sample4)
Однако, поскольку Magento генерирует верхнее меню с использованием PHP, мне нужно также вставить CSS-класс sfHover с использованием PHP.
Это код, который Magento использует для вставки классов CSS в верхние навигационные ссылки:
$classes = array();
$classes[] = 'level' . $level;
$classes[] = 'nav-' . $this->_getItemPosition($level);
if ($this->isCategoryActive($category)) {
$classes[] = 'active';
}
$linkClass = '';
if ($isOutermost && $outermostItemClass) {
$classes[] = $outermostItemClass;
$linkClass = ' class="'.$outermostItemClass.'"';
}
if ($isFirst) {
$classes[] = 'first';
}
if ($isLast) {
$classes[] = 'last';
}
if ($hasActiveChildren) {
$classes[] = 'parent';
}
Это код, который Magento использует для определения позиции каждой категории в верхней навигационной панели:
protected function _getItemPosition($level)
{
if ($level == 0) {
$zeroLevelPosition = isset($this->_itemLevelPositions[$level]) ? $this->_itemLevelPositions[$level] + 1 : 1;
$this->_itemLevelPositions = array();
$this->_itemLevelPositions[$level] = $zeroLevelPosition;
} elseif (isset($this->_itemLevelPositions[$level])) {
$this->_itemLevelPositions[$level]++;
} else {
$this->_itemLevelPositions[$level] = 1;
}
$position = array();
for($i = 0; $i <= $level; $i++) {
if (isset($this->_itemLevelPositions[$i])) {
$position[] = $this->_itemLevelPositions[$i];
}
}
return implode('-', $position);
}
Я попробовал следующее, чтобы добавить свой класс CSS:
if ($this->_getItemPosition($level) == "1") {
$classes[] = 'sfHover';
}
и
if ($position == "1") {
$classes[] = 'sfHover';
}
Но ни один из них не работает ни с тремя знаками равенства ===, ни с одинарными кавычками.
Кто-нибудь с большим знанием Magento / PHP, чем я, знает, что я могу сделать? Заранее спасибо!
Обновление: скрипт Superfish удаляет класс sfHover. Нужно добавить «активный» класс вместо Navigation.php.
Я могу сделать это в top.phtml с помощью следующего кода на навигационной панели с ручным кодированием:
<?php $_anyActive = false; foreach ($this->getStoreCategories() as $_category) { $_anyActive = $_anyActive || $this->isCategoryActive($_category); } ?>
<li class="level0 nav-1 level-top first parent <?php echo !$_anyActive ? 'active' : '' ?>">
Но я не знаю, как интегрировать это с кодом из Navigation.php ...