public function actionProductItems() { $this->layout = false; if ($q = Yii::$app->request->post('q')) { $offset = Yii::$app->session->get("controllers.search.index.{$q}.offset"); $offset += static::PRODUCTS_LIMIT; Yii::$app->session->set("controllers.search.index.{$q}.offset", $offset); $q_utf8 = StringUtils::utf8convert($q); $translations = ProductTranslation::find()->orFilterWhere(['like', 'name', $q])->orFilterWhere(['like', 'meta_title', $q])->orFilterWhere(['like', 'meta_description', $q])->orFilterWhere(['like', 'meta_keywords', $q])->orFilterWhere(['like', 'h1', $q])->orFilterWhere(['like', 'page_title', $q])->orFilterWhere(['like', 'description', $q])->orFilterWhere(['like', 'detail', $q])->orFilterWhere(['like', 'name', $q_utf8])->orFilterWhere(['like', 'meta_title', $q_utf8])->orFilterWhere(['like', 'meta_description', $q_utf8])->orFilterWhere(['like', 'meta_keywords', $q_utf8])->orFilterWhere(['like', 'h1', $q_utf8])->orFilterWhere(['like', 'page_title', $q_utf8])->orFilterWhere(['like', 'description', $q_utf8])->orFilterWhere(['like', 'detail', $q_utf8])->all(); $pids = ArrayHelper::getColumn($translations, 'product_id'); $products = Product::getProducts(['id_in' => $pids, 'orderBy' => Yii::$app->request->post('orderBy'), 'limit' => static::PRODUCTS_LIMIT, 'offset' => $offset]); $nextProductsNumber = count(Product::getProducts(['id_in' => $pids, 'limit' => static::PRODUCTS_LIMIT, 'offset' => $offset + static::PRODUCTS_LIMIT])); $productsHtml = $this->render('//product/items', ['products' => $products, 'offset' => $offset]); return json_encode(['productsHtml' => $productsHtml, 'nextProductsNumber' => $nextProductsNumber]); } }
public function t($column = null, $language_id = null) { if ($language_id == null) { $language_id = Yii::$app->session->get('language_id'); } if ($this->_product_translation === null) { if (!($this->_product_translation = ProductTranslation::find()->where(['product_id' => $this->id])->andWhere(['language_id' => $language_id])->one())) { if (!($this->_product_translation = ProductTranslation::find()->where(['product_id' => $this->id])->andWhere(['language_id' => Language::getDefault()->id])->one())) { if (!($this->_product_translation = ProductTranslation::find()->where(['product_id' => $this->id])->orderBy('id asc')->one())) { $this->_product_translation = new ProductTranslation(); } } } } if ($column == null) { return $this->_product_translation; } return $this->_product_translation->{$column}; }