1.后台的菜单实现是在这里:
https://github.com/fecshop/yii2_fecshop/blob/master/app/appadmin/modules/Catalog/block/category/Index.php
ublic function getCategoryTree($treeArr = '', $level = 0)
{
if (!$treeArr) {
$treeArr = Yii::$service->category->getTreeArr();
}
$id = Yii::$service->category->GetPrimaryKey();
if (!$level) {
$str = '<ul class="tree treeFolder">';
} else {
$str = '<ul>';
}
...
上面实现的数据,因此,查看方法:$treeArr = Yii::$service->category->getTreeArr();
/**
* 得到分类的树数组。
* 数组中只有 id name(default language), child(子分类) 等数据。
* 目前此函数仅仅用于后台对分类的编辑使用。 appadmin.
*/
public function getTreeArr($rootCategoryId = '', $lang = '',$appserver=false,$level = 1)
{
$arr = [];
if (!$lang) {
$lang = Yii::$service->fecshoplang->defaultLangCode;
}
if (!$rootCategoryId) {
$where = ['parent_id' => '0'];
} else {
$where = ['parent_id' => $rootCategoryId];
}
$categorys = $this->_categoryModel->find()->asArray()->where($where)->all();
//var_dump($categorys);exit;
$idKey = $this->getPrimaryKey();
if (!empty($categorys)) {
foreach ($categorys as $cate) {
$idVal = (string) $cate[$idKey];
$arr[$idVal] = [
$idKey => $idVal,
'level' => $level,
'name' => Yii::$service->fecshoplang->getLangAttrVal($cate['name'], 'name', $lang),
];
if($appserver){
$arr[$idVal]['url'] = '/catalog/category/'.$idVal;
}
//echo $arr[$idVal]['name'];
if ($this->hasChildCategory($idVal)) {
$arr[$idVal]['child'] = $this->getTreeArr($idVal, $lang,$appserver,$level+1);
}
}
}
return $arr;
}
因此,你可以看到, $treeArr = Yii::$service->category->getTreeArr();
改成
$treeArr = Yii::$service->category->getTreeArr('','zh');
就可以了
block的重写参看:
http://www.fecshop.com/doc/fecshop-guide/develop/cn-1.0/guide-fecshop-rewrite-func.html
8.通过rewriteMap进行重写Block Model 层