gpt4 book ai didi

php - Magento 按管理顺序加载类别

转载 作者:行者123 更新时间:2023-12-04 05:10:12 24 4
gpt4 key购买 nike

我正在尝试以与管理面板中相同的顺序加载标记为包含在 Magento 导航中的所有类别,以便构建自定义分层菜单(我们将输出与存储在DB 到其他页面)。

到目前为止,这是我在生成菜单的函数中使用的内容:

private function generateCategories() {

$_root_category_id = Mage::app()->getWebsite(true)->getDefaultStore()->getRootCategoryId();

$_current_children = Mage::getModel('catalog/category')
->getCollection()
->addAttributeToSelect('*')
->addIsActiveFilter()
->addLevelFilter(2)
->addOrderField('position', 'asc');

$i = 0;

$html = '';

foreach( $_current_children as $l0 ) {
if ($l0->getID() != $_root_category_id && $l0->getName() != '' && $l0->getIncludeInMenu()) {

$i++;

if (Mage::helper('core/url')->getCurrentUrl() == $l0->getURL())
$active = ' active';
else
$active = '';

if ($l0->hasChildren())
$parent = ' parent';
else
$parent = '';

$html .= '<li class=" level0' . $active . $parent . '"><a href="' . $l0->getURL() . '" class="top">' . $l0->getName() . '</a>';

if ($l0->hasChildren()) {
$multiplier = 1;
$iteration = 0;

$level1 = '';
$level1[] = '';

foreach ( explode(',', $l0->getChildren()) as $l1 ) {

$l1 = Mage::getModel('catalog/category')->load($l1);

if ( $l1->getIncludeInMenu() ) {

if (Mage::helper('core/url')->getCurrentUrl() == $l1->getURL())
$active = ' active';
else
$active = '';

if ($iteration == $this->perColumn) {
$iteration = 0;
$multiplier++;
}

$iteration++;

$level1[] = '<span class="level1' . $active . '"><a href="' . $l1->getURL() . '" title="' . $l1->getName() . '">' . $l1->getName() . '</a></span>';
}
}

unset($level1[0]);

$numLinks = count($level1);
$columns = $numLinks / $this->perColumn;

$html .= '<div class="border-cover"></div><div class="dropdown" style="width: ' . $this->colWidth * $multiplier . 'em;">';

$used = 0;
$iteration = 0;

foreach( $level1 as $link ) {
$used++;
$iteration++;

if ($used == 1)
$html .= '<div class="col" style="float: left; width: ' . $this->colWidth . 'em;">';

$html .= $link;

if ($used == 4 || $iteration == $numLinks) {
$html .= '</div>';
$used = 0;
}
}

$html .= '</div>';
}

$html .= '</li>';
}
}

return $html;

}

我的印象是 ->addOrderField('position', 'asc')应该按照与管理面板中相同的顺序过滤类别,但这仅适用于第一级 ( $l0 ) 类别,而不适用于子类别。

任何人都可以建议如何修改它以使其工作?

最佳答案

尝试使用函数 getChildrenCategories() 而不是 getChildren 这将返回一个对象而不是类别的 id,因此您不需要加载信息。

更多信息请访问 Change sort order of Magento subcategories

关于php - Magento 按管理顺序加载类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14981076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com