Jump to content

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


Recommended Posts

Добрый день.

Установлена мультиязычная 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

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

Link to post
Share on other sites
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();
	}

 

Link to post
Share on other sites
Posted (edited)
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

Edited by founder
Link to post
Share on other sites

Не пойму откуда берется 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);

 

Link to post
Share on other sites
3 минуты назад, founder сказал:

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

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

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

Link to post
Share on other sites
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);

 

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

Link to post
Share on other sites
12 минут назад, phukortsin сказал:

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

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

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

Link to post
Share on other sites
13 часов назад, founder сказал:

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

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

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...