我需要在Magento中自定義Navigation.php的幫助。我正在使用Superfish創建頂級導航欄,如果沒有選擇其他選項卡,則始終打開第一個選項卡(此Superfish導航欄示例具有第二個選項卡作爲默認設置:http://users.tpg.com.au/j_birch/plugins/superfish/#sample4)Magento Top Nav:使用PHP向第一類添加CSS類
但是,由於Magento使用PHP生成頂級菜單,我需要使用PHP插入CSS類sfHover。
這是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 ...
代碼
1.該導航高度緩存,因此請確保在進行更改後清除緩存。 2.當你var_dump($ position)時會發生什麼; – 2012-03-07 18:45:45
1.每次我對文件進行更改時,我一直在清除緩存。 2.我會嘗試var_dump。我以前從來沒有做過。謝謝! – mercyt 2012-03-07 19:11:24
更新:嘗試做一個var_dump,它返回的是「null」。我不確定我是否正確使用它,但嘗試了兩種不同的方法,但仍然無法正常工作。 – mercyt 2012-03-07 19:26:40