1.感觉是不一样的 无限分类

1.拿到所有分类

$model = $this->findModel($id);
$allCategory = Category::find()->asArray()->all();
$arrayCategoryIdName = ArrayHelper::map($allCategory, 'id', 'name');

ArrayHelper::map映射函数使用:
array (size=7)
  1 => string '手机' (length=6)
  2 => string '电脑' (length=6)
  3 => string '苹果' (length=6)
  4 => string '三星' (length=6)
  5 => string '台式机' (length=9)
  6 => string '笔记本' (length=9)
  7 => string '上网本' (length=9)

2.取得父id

$rootCategoryId = Category::getRootCatalogId($model->category_id, $allCategory);

static public function getRootCalalogId($id = 0, $array = [])
{
    if(0 == $id)
   return 0;
   foreach ((array)$array as $v) {
            if ($v['id'] == $id) {
                $parentId = $v['parent_id'];
                if(0 == $parentId)
                    return $id;
                else
                    return self::getRootCatalogId($parentId, $array);
            }
        } 
}

3.得到一个父类的所有子类

static public function getArraySubCatalogId($parentId = 0, $array = [])
    {
        $result[] = $parentId;
        foreach ((array)$array as $v) {
            if ($v['parent_id'] == $parentId) {
                $tempResult = self::getArraySubCatalogId($v['id'], $array);
                if ($tempResult) {
                    $result = array_merge($result, $tempResult);
                }
            }
        }
        return $result;
    }
 // 同类商品  和 同大类商品
        $sameCategoryProducts = Product::find()->where(['category_id' => $model->category_id])->orderBy(['sales' => SORT_DESC])->limit(3)->all();

        $sameRootCategoryProducts = Product::find()->where(['category_id' => $arraySameRootCategory])->orderBy(['sales' => SORT_DESC])->limit(Yii::$app->params['productHotCount'])->all();

4.记录浏览日志

// 记录浏览日志
        $historyProducts = [];
        $cookies = Yii::$app->request->cookies;
        if ($cookies->has('productHistory')) {
            $arrHistory = explode(',', $cookies->getValue('productHistory'));

            foreach ($arrHistory as $v) {
                $product = Product::findOne($v);
                if ($product) {
                    array_push($historyProducts, $product);
                }
            }

            array_unshift($arrHistory, $id);
            $arrHistory = array_unique($arrHistory);
            while (count($arrHistory) > Yii::$app->params['productHistoryCount']) {
                array_pop($arrHistory);
            }
            Yii::$app->response->cookies->remove('productHistory');
            Yii::$app->response->cookies->add(new Cookie([
                'name' => 'productHistory',
                'value' => implode(',', $arrHistory),
                'expire' => time() + 3600 * 24 * 30,
            ]));
        } else {
            Yii::$app->response->cookies->add(new Cookie([
                'name' => 'productHistory',
                'value' => $id,
                'expire' => time() + 3600 * 24 * 30,
            ]));
        }
原文地址:https://www.cnblogs.com/anArtist/p/5064987.html