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

Вывод отзывов к товарам на страницу определенного бренда


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

Привет всем!

Ребят кому не сложно, или кто то уже такое делал, поделитесь пожалуйста.

 

Суть проблемы:

 

К примеру, есть отзывы на странице бренда товаров (к примеру Sony), и есть отзывы уже в карточке любого товара этого бренда.

Как сделать что бы отзывы с карточки товара выводились на странице бренда с товарами?

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

 

Заранее благодарю всех кто сможет помочь)

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

Надо возиться и полностью программировать.

А если у Вас уже "есть отзывы на странице бренда", то есть нестандартная доработка, то еще сложнее.

Бесплатное решение вряд ли найдется.

Если готовы оплачивать, обращайтесь...

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

 

К примеру, есть отзывы на странице бренда товаров (к примеру Sony)

 

нет такого в стандартном функционале.

 

чтобы вывести на странице бренда все комментарии к товарам этого бренда:

в view/ProductsView.php после (строка 192) кода:

		if(!empty($category))
		{
			$brands = $this->brands->get_brands(array('category_id'=>$category->children, 'visible'=>1));
			$category->brands = $brands;		
		}

 

вставить следующее:

		if (!empty($brand_url) && $products)
		{
			$brand_comments = $this->comments->get_comments( array('object_id'=>$products_ids, 'type'=>'product', 'approved'=>1) );

			foreach ($brand_comments as &$c) {
				$c->product = $products[$c->object_id];
			}

			$this->design->assign('brand_comments', $brand_comments);
		}

дальше, в шаблоне design/тема/html/products.html для вывода комментариев после:

{include file='pagination.tpl'}

вставляем код:

{if $brand && $brand_comments}
	<div id="comments">
		<h2>Комментарии</h2>
		<!-- Список с комментариями -->
		<ul class="comment_list">
			{foreach $brand_comments as $comment}
			<a name="comment_{$comment->id}"></a>
			<li>
				<!-- Имя и дата комментария-->
				<div class="comment_header">	
					{$comment->name|escape} <i>{$comment->date|date}, {$comment->date|time}</i>
					<br>К товару <a href="{$comment->product->url}">{$comment->product->name|escape}</a>
				</div>
				<!-- Имя и дата комментария (The End)-->
				
				<!-- Комментарий -->
				{$comment->text|escape|nl2br}
				<!-- Комментарий (The End)-->
			</li>
			{/foreach}
		</ul>
		<!-- Список с комментариями (The End)-->
	</div>
{/if}
Ссылка на сообщение
Поделиться на другие сайты

 

нет такого в стандартном функционале.

 

чтобы вывести на странице бренда все комментарии к товарам этого бренда:

в view/ProductsView.php после (строка 192) кода:

		if(!empty($category))
		{
			$brands = $this->brands->get_brands(array('category_id'=>$category->children, 'visible'=>1));
			$category->brands = $brands;		
		}

 

вставить следующее:

		if (!empty($brand_url) && $products)
		{
			$brand_comments = $this->comments->get_comments( array('object_id'=>$products_ids, 'type'=>'product', 'approved'=>1) );

			foreach ($brand_comments as &$c) {
				$c->product = $products[$c->object_id];
			}

			$this->design->assign('brand_comments', $brand_comments);
		}

дальше, в шаблоне design/тема/html/products.html для вывода комментариев после:

{include file='pagination.tpl'}

вставляем код:

{if $brand && $brand_comments}
	<div id="comments">
		<h2>Комментарии</h2>
		<!-- Список с комментариями -->
		<ul class="comment_list">
			{foreach $brand_comments as $comment}
			<a name="comment_{$comment->id}"></a>
			<li>
				<!-- Имя и дата комментария-->
				<div class="comment_header">	
					{$comment->name|escape} <i>{$comment->date|date}, {$comment->date|time}</i>
					<br>К товару <a href="{$comment->product->url}">{$comment->product->name|escape}</a>
				</div>
				<!-- Имя и дата комментария (The End)-->
				
				<!-- Комментарий -->
				{$comment->text|escape|nl2br}
				<!-- Комментарий (The End)-->
			</li>
			{/foreach}
		</ul>
		<!-- Список с комментариями (The End)-->
	</div>
{/if}

Спасибо большое, попробую отпишусь)

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

Тяжеловато будет с таким решением.

 

Даже у средних магазинов иногда бывает довольно много отзывов у ОДНОГО товара.

А при таком способе весьма вероятно, что их станет катастрофически много, с тормозами при загрузке вплоть до зависания...

Значит, надо пагинацию по отзывам делать.

Но тогда это будет уже вторая пагинация (первая идет по товарам).

Весьма тяжелая страница выходит...

 

Второй аспект: будут идти отзывы подряд - первый на часы, второй на трусы. Думаете, будет хорошо выглядеть?

 

Третий момент: каждый отдельный отзыв непонятно к чему относится.

 

Стоит крепко подумать, стоит ли применять такое...

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

Тяжеловато будет с таким решением.

 

Даже у средних магазинов иногда бывает довольно много отзывов у ОДНОГО товара.

А при таком способе весьма вероятно, что их станет катастрофически много, с тормозами при загрузке вплоть до зависания...

Значит, надо пагинацию по отзывам делать.

Но тогда это будет уже вторая пагинация (первая идет по товарам).

Весьма тяжелая страница выходит...

 

Второй аспект: будут идти отзывы подряд - первый на часы, второй на трусы. Думаете, будет хорошо выглядеть?

 

Третий момент: каждый отдельный отзыв непонятно к чему относится.

 

Стоит крепко подумать, стоит ли применять такое...

Согласен что будет глупо так выглядеть. Меня просто попросили помочь так сделать, но я не думал что настолько сложно это окажется)) Я уже об этом говорил, что покупателям это не понравиться, не понятно к чему был оставлен отзыв, ну хотят поэкспериментировать)) 

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

Ребят представленный код не помог к сожалению.

 

В файле ProductsView.php есть код который отвечает какие отзывы выводить на странице товаров определенного бренда:

// Комментарии к бренду
		 
		
		if (!$is_discounted){
			$comments = $this->comments->get_comments(array('type'=>'brand', 'object_id'=>$category->id, 'approved'=>1, 'ip'=>$_SERVER['REMOTE_ADDR']));
			$comments_count = count($comments);
			(int)$comments_count;
			$products_comments = $this->comments->get_products_comments($category->id);			

			$this->design->assign('products_comments', $products_comments);
			$this->design->assign('comments', $comments);
			$this->design->assign('comments_count', $comments_count);
			//youtube
			$utube_video = $this->categories->ut_cat(intval($category->id));
			$this->design->assign('utube_video', $utube_video);
		}

И когда я меняю 

$comments = $this->comments->get_comments(array('type'=>'brand', 'object_id'=>$category->id, 'approved'=>1, 'ip'=>$_SERVER['REMOTE_ADDR']));

на

$comments = $this->comments->get_comments(array('type'=>'product', 'object_id'=>$product->id, 'approved'=>1, 'ip'=>$_SERVER['REMOTE_ADDR']));

То выводит все отзывы всех товаров разных брендов (224 отзыва).

А когда меняю на 

$comments = $this->comments->get_comments(array('type'=>'brand', 'object_id'=>$product->id, 'approved'=>1, 'ip'=>$_SERVER['REMOTE_ADDR']));

То уже выводит 20 отзывов, но все равно не оттуда черпает. 

Есть у кого то идея что прописать нужно? Заранее благодарю.

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

 

Третий момент: каждый отдельный отзыв непонятно к чему относится. ...

 

вообще-то понятно к чему. возле отзыва пишет к какому товару он

 

 

Второй аспект: будут идти отзывы подряд - первый на часы, второй на трусы. Думаете, будет хорошо выглядеть?

 

отзывы сортируются по дате добавления, а не идут подряд для каждого товара, https://yadi.sk/i/pUEmOUIfkThtf

в итоге 2 из 3х ваших замечаний - сотрясание воздуха. 

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

Ребят представленный код не помог к сожалению.

 

 

Есть у кого то идея что прописать нужно? Заранее благодарю.

 

пишите в личку доступы, видимо у вас конфликт какой-то с отзывами бренда, или вы не туда вставляете.

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

в итоге 2 из 3х ваших замечаний - сотрясание воздуха.

Замечание 1. Судя по тому, что на него у Вас возражений нет, оно полностью правильное.

Замечание 2. Вы отметили, что "отзывы сортируются по дате добавления, а не идут подряд для каждого товара". Такая сортировка хороша на странице ОДНОГО товара, а в Вашей реализации, когда каждый отзыв к своему товару - сборная солянка. Сомнительно, что серьезному покупателю будет интересно. Его, как правило, интересуют отзывы на товар, который он уже приглядел, а не на все подряд. Я и поставил вопрос, хорошо ли это?

Замечание 3. Тут я недоглядел, замечание неверное, Вы правы.

 

Продолжим банкет.

 

...но все равно не оттуда черпает.

 

Замечание 4. Для извлечения отзывов по брендам в предложенном решении используется

$brand_comments = $this->comments->get_comments( array('object_id'=>$products_ids, 'type'=>'product', 'approved'=>1) );

Смысл понять легко: извлекаются отзывы к товарам, у которых ID из массива $products_ids. А откуда берется этот массив? Это массив ID товаров, которые выводятся на текущей странице. То есть реально выводятся отзывы не ко всем товарам бренда, как требовалось, а только к товарам, показываемым на текущей странице. Отсюда вывод - это решение работает правильно, только если все товары бренда умещаются на одной странице. Видимо, автор проверял свое решение лишь в простейших случаях...

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

И когда я меняю

...

на

....

То выводит все отзывы всех товаров разных брендов (224 отзыва).

А когда меняю на

....

То уже выводит 20 отзывов, но все равно не оттуда черпает.

Есть у кого то идея что прописать нужно? Заранее благодарю.

 

Идея одна - писать код не методом тыка и копирования из других мест, а хотя бы с небольшим пониманием.

Например, когда у Вас встречается $category->id, то для страницы бренда это значение не определено.

Что касается остального, например, 'type'=>'brand', то стандартно в Simpla этот параметр не обрабатывается. Если Вы изменяли обработку, то в этой теме неизвестно, где и как Вы проводили изменения...

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

 

Замечание 2. Вы отметили, что "отзывы сортируются по дате добавления, а не идут подряд для каждого товара". Такая сортировка хороша на странице ОДНОГО товара, а в Вашей реализации, когда каждый отзыв к своему товару - сборная солянка. Сомнительно, что серьезному покупателю будет интересно. Его, как правило, интересуют отзывы на товар, который он уже приглядел, а не на все подряд. Я и поставил вопрос, хорошо ли это?

 

 

Замечание 4. Для извлечения отзывов по брендам в предложенном решении используется

$brand_comments = $this->comments->get_comments( array('object_id'=>$products_ids, 'type'=>'product', 'approved'=>1) );

Смысл понять легко: извлекаются отзывы к товарам, у которых ID из массива $products_ids. А откуда берется этот массив? Это массив ID товаров, которые выводятся на текущей странице. То есть реально выводятся отзывы не ко всем товарам бренда, как требовалось, а только к товарам, показываемым на текущей странице. Отсюда вывод - это решение работает правильно, только если все товары бренда умещаются на одной странице. Видимо, автор проверял свое решение лишь в простейших случаях...

 

то вы пишите что подряд - плохо, теперь когда поняли что отзывы идут по дате - по дате плохо. нужно по товару который он приглядел (это как выяснять будете? по просмотренным товарам?)

 

замечание 1 о пагинации и 4 имеют место быть.

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

то вы пишите что подряд - плохо, теперь когда поняли что отзывы идут по дате - по дате плохо. нужно по товару который он приглядел (это как выяснять будете? по просмотренным товарам?)

Да, подряд - плохо. И по дате - плохо. Причины объяснил.

"по товару который он приглядел" - это хорошо. И это реализовал давно разработчик Simpla на странице товара.

 

"по товару который он приглядел" - было бы хорошо и на странице бренда, но реализовать нереально. Потому что скрипты сайта еще не научились читать мысли посетителя...

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

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

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

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

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

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

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

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

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

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

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