Перейти к содержанию
Официальный форум поддержки Simpla

Описание брендов в категории в мультиязычной Simpla


Рекомендуемые сообщения

Добрый день.

Установлена мультиязычная Simpla, хочу поставить описание брендов в категории

в api/Categories.php

	// Страницы описания брендов 
	public function get_category_brand($category_id, $brand_id)
	{
		$query = "SELECT * 
				  FROM __category_brands 
				  WHERE category_id = $category_id AND brand_id = $brand_id";
		$this->db->query($query);
		return $this->db->result();		
	}
	
	public function get_category_brands($id)
	{
		$query = "SELECT cb.*, 
						 b.name 
				  FROM __category_brands cb 
				  INNER JOIN __brands b ON (cb.brand_id = b.id) 
				  WHERE cb.category_id = $id";
		$this->db->query($query);
		return $this->db->results();
	}

Меняю на:

	// Страницы описания брендов в категории
	public function get_category_brand($category_id, $brand_id)
	{
		
        $lang_sql = $this->languages->get_query(array('object'=>'category_brand'));

		$query = "SELECT  cb.id, cb.brand_id, cb.category_id, ".$lang_sql->fields." 
				  FROM __category_brands cb ".$lang_sql->join."
				  WHERE category_id = $category_id AND brand_id = $brand_id";
		$this->db->query($query);
		return $this->db->result();
	}
	public function get_category_brands($id)
	{
		
        $lang_sql = $this->languages->get_query(array('object'=>'category_brand'));

		$query = "SELECT  cb.id, cb.brand_id, cb.category_id, ".$lang_sql->fields.", 
						b.name 
				  FROM __category_brands cb ".$lang_sql->join."
				  INNER JOIN __brands b ON (cb.brand_id = b.id) 
				  WHERE cb.category_id = $id";
		$this->db->query($query);
		return $this->db->results();
	}

В админке отображает ошибку что не найдено в БД c.id

Подскажите, пожалуйста, где ошибка?

Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, founder сказал:

Добрый день.

Установлена мультиязычная Simpla, хочу поставить описание брендов в категории

в api/Categories.php


	// Страницы описания брендов 
	public function get_category_brand($category_id, $brand_id)
	{
		$query = "SELECT * 
				  FROM __category_brands 
				  WHERE category_id = $category_id AND brand_id = $brand_id";
		$this->db->query($query);
		return $this->db->result();		
	}
	
	public function get_category_brands($id)
	{
		$query = "SELECT cb.*, 
						 b.name 
				  FROM __category_brands cb 
				  INNER JOIN __brands b ON (cb.brand_id = b.id) 
				  WHERE cb.category_id = $id";
		$this->db->query($query);
		return $this->db->results();
	}

Меняю на:


	// Страницы описания брендов в категории
	public function get_category_brand($category_id, $brand_id)
	{
		
        $lang_sql = $this->languages->get_query(array('object'=>'category_brand'));

		$query = "SELECT  cb.id, cb.brand_id, cb.category_id, ".$lang_sql->fields." 
				  FROM __category_brands cb ".$lang_sql->join."
				  WHERE category_id = $category_id AND brand_id = $brand_id";
		$this->db->query($query);
		return $this->db->result();
	}
	public function get_category_brands($id)
	{
		
        $lang_sql = $this->languages->get_query(array('object'=>'category_brand'));

		$query = "SELECT  cb.id, cb.brand_id, cb.category_id, ".$lang_sql->fields.", 
						b.name 
				  FROM __category_brands cb ".$lang_sql->join."
				  INNER JOIN __brands b ON (cb.brand_id = b.id) 
				  WHERE cb.category_id = $id";
		$this->db->query($query);
		return $this->db->results();
	}

В админке отображает ошибку что не найдено в БД c.id

Подскажите, пожалуйста, где ошибка?

Помимо мультиязычности, которой стандарно нет в SimplaCMS у вас еще свой функционал вывода категорий и брендов к ним.
Ошибку нужно смотреть на месте, а так попробуйте:

	// Страницы описания брендов в категории
	public function get_category_brand($category_id, $brand_id) {
		
        $lang_sql = $this->languages->get_query(array('object'=>'category_brand'));

		$query = $this->db->placehold("SELECT
				cb.id, cb.brand_id, cb.category_id, $lang_sql->fields 
				FROM __category_brands cb
				$lang_sql->join
				WHERE 
					category_id = $category_id 
				AND brand_id = $brand_id
		");
		$this->db->query($query);
		return $this->db->result();
	}

	public function get_category_brands($id) {
		
        $lang_sql = $this->languages->get_query(array('object'=>'category_brand'));

		$query = $this->db->placehold("SELECT
				cb.id, cb.brand_id, cb.category_id, b.name, $lang_sql->fields
				  FROM __category_brands cb
				  $lang_sql->join
				  INNER JOIN __brands b ON (cb.brand_id = b.id) 
				  WHERE cb.category_id = $id
		");
		$this->db->query($query);
		return $this->db->results();
	}

 

Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, alexivchenko сказал:

Помимо мультиязычности, которой стандарно нет в SimplaCMS у вас еще свой функционал вывода категорий и брендов к ним.
Ошибку нужно смотреть на месте, а так попробуйте:


	// Страницы описания брендов в категории
	public function get_category_brand($category_id, $brand_id) {
		
        $lang_sql = $this->languages->get_query(array('object'=>'category_brand'));

		$query = $this->db->placehold("SELECT
				cb.id, cb.brand_id, cb.category_id, $lang_sql->fields 
				FROM __category_brands cb
				$lang_sql->join
				WHERE 
					category_id = $category_id 
				AND brand_id = $brand_id
		");
		$this->db->query($query);
		return $this->db->result();
	}

	public function get_category_brands($id) {
		
        $lang_sql = $this->languages->get_query(array('object'=>'category_brand'));

		$query = $this->db->placehold("SELECT
				cb.id, cb.brand_id, cb.category_id, b.name, $lang_sql->fields
				  FROM __category_brands cb
				  $lang_sql->join
				  INNER JOIN __brands b ON (cb.brand_id = b.id) 
				  WHERE cb.category_id = $id
		");
		$this->db->query($query);
		return $this->db->results();
	}

 

Все равно ошибка: Warning: Unknown column 'l.category_brand_id' in 'on clause' in W:\home\localhost\www\site\api\Database.php on line 132

Изменено пользователем founder
Ссылка на сообщение
Поделиться на другие сайты

Не пойму откуда берется category_brand_id, в коде его вообще нет

в CategoryAdmin.php добавлено:


		$category_brands = $this->categories->get_category_brands($category->id);
		$this->design->assign('category_brands', $category_brands);
		foreach($category_brands as $brand) {
			$brand_ids[$brand->brand_id] = $brand->brand_id;
		}
		$all_brands = $this->brands->get_brands();
		foreach($all_brands as $brand) {
			if(!isset($brand_ids[$brand->id])) {
				$brands[] = $brand;
			}
		}
		$this->design->assign('brands', $brands);

 

Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, founder сказал:

Не пойму откуда берется category_brand_id, в коде его вообще нет

В коде есть, но, видимо, не там, где Вы смотрите... 

Возможно, это возникает в переменной $lang_sql->join. А возможно, еще в каком-нибудь из десятков мест...

Ссылка на сообщение
Поделиться на другие сайты
14 минут назад, founder сказал:

Не пойму откуда берется category_brand_id, в коде его вообще нет

в CategoryAdmin.php добавлено:



		$category_brands = $this->categories->get_category_brands($category->id);
		$this->design->assign('category_brands', $category_brands);
		foreach($category_brands as $brand) {
			$brand_ids[$brand->brand_id] = $brand->brand_id;
		}
		$all_brands = $this->brands->get_brands();
		foreach($all_brands as $brand) {
			if(!isset($brand_ids[$brand->id])) {
				$brands[] = $brand;
			}
		}
		$this->design->assign('brands', $brands);

 

напишите в личные сообщения, разберемся. гадать на гуще нет желания.

Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, phukortsin сказал:

В коде есть, но, видимо, не там, где Вы смотрите... 

Возможно, это возникает в переменной $lang_sql->join. А возможно, еще в каком-нибудь из десятков мест...

Запустил поиск по всем файлам на сайте, ничего не найдено по запросу category_brand_id

Ссылка на сообщение
Поделиться на другие сайты
13 часов назад, founder сказал:

Запустил поиск по всем файлам на сайте, ничего не найдено по запросу category_brand_id

Возможно, программно генерируется из частей. Надо бы распечатывать текст запроса, а потом копать дальше. А вообще надо проверять всю схему...

Очень вероятно, это возникает от  $lang_sql = $this->languages->get_query(array('object'=>'category_brand'));

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...