MegaWolf Posted November 13, 2015 Report Share Posted November 13, 2015 Привет всем!Ребят кому не сложно, или кто то уже такое делал, поделитесь пожалуйста. Суть проблемы: К примеру, есть отзывы на странице бренда товаров (к примеру Sony), и есть отзывы уже в карточке любого товара этого бренда.Как сделать что бы отзывы с карточки товара выводились на странице бренда с товарами?Допустим зашел пользователь в бренд Sony, выбрал нужный товар, перешел в его карточку и там оставил отзыв, и надо что бы этот отзыв отображался и в карточке и в бренде. Заранее благодарю всех кто сможет помочь) Quote Link to post Share on other sites
Kors Posted November 14, 2015 Report Share Posted November 14, 2015 Надо возиться и полностью программировать. А если у Вас уже "есть отзывы на странице бренда", то есть нестандартная доработка, то еще сложнее. Бесплатное решение вряд ли найдется. Если готовы оплачивать, обращайтесь... Quote Link to post Share on other sites
mishanya Posted November 14, 2015 Report Share Posted November 14, 2015 К примеру, есть отзывы на странице бренда товаров (к примеру 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} Quote Link to post Share on other sites
MegaWolf Posted November 14, 2015 Author Report Share Posted November 14, 2015 нет такого в стандартном функционале. чтобы вывести на странице бренда все комментарии к товарам этого бренда:в 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} Спасибо большое, попробую отпишусь) Quote Link to post Share on other sites
Kors Posted November 14, 2015 Report Share Posted November 14, 2015 Тяжеловато будет с таким решением. Даже у средних магазинов иногда бывает довольно много отзывов у ОДНОГО товара. А при таком способе весьма вероятно, что их станет катастрофически много, с тормозами при загрузке вплоть до зависания... Значит, надо пагинацию по отзывам делать. Но тогда это будет уже вторая пагинация (первая идет по товарам). Весьма тяжелая страница выходит... Второй аспект: будут идти отзывы подряд - первый на часы, второй на трусы. Думаете, будет хорошо выглядеть? Третий момент: каждый отдельный отзыв непонятно к чему относится. Стоит крепко подумать, стоит ли применять такое... Quote Link to post Share on other sites
MegaWolf Posted November 14, 2015 Author Report Share Posted November 14, 2015 Тяжеловато будет с таким решением. Даже у средних магазинов иногда бывает довольно много отзывов у ОДНОГО товара.А при таком способе весьма вероятно, что их станет катастрофически много, с тормозами при загрузке вплоть до зависания...Значит, надо пагинацию по отзывам делать.Но тогда это будет уже вторая пагинация (первая идет по товарам).Весьма тяжелая страница выходит... Второй аспект: будут идти отзывы подряд - первый на часы, второй на трусы. Думаете, будет хорошо выглядеть? Третий момент: каждый отдельный отзыв непонятно к чему относится. Стоит крепко подумать, стоит ли применять такое...Согласен что будет глупо так выглядеть. Меня просто попросили помочь так сделать, но я не думал что настолько сложно это окажется)) Я уже об этом говорил, что покупателям это не понравиться, не понятно к чему был оставлен отзыв, ну хотят поэкспериментировать)) Quote Link to post Share on other sites
MegaWolf Posted November 14, 2015 Author Report Share Posted November 14, 2015 Ребят представленный код не помог к сожалению. В файле 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 отзывов, но все равно не оттуда черпает. Есть у кого то идея что прописать нужно? Заранее благодарю. Quote Link to post Share on other sites
mishanya Posted November 15, 2015 Report Share Posted November 15, 2015 (edited) Третий момент: каждый отдельный отзыв непонятно к чему относится. ... вообще-то понятно к чему. возле отзыва пишет к какому товару он Второй аспект: будут идти отзывы подряд - первый на часы, второй на трусы. Думаете, будет хорошо выглядеть? отзывы сортируются по дате добавления, а не идут подряд для каждого товара, https://yadi.sk/i/pUEmOUIfkThtfв итоге 2 из 3х ваших замечаний - сотрясание воздуха. Edited November 15, 2015 by mishanya Quote Link to post Share on other sites
mishanya Posted November 15, 2015 Report Share Posted November 15, 2015 Ребят представленный код не помог к сожалению. Есть у кого то идея что прописать нужно? Заранее благодарю. пишите в личку доступы, видимо у вас конфликт какой-то с отзывами бренда, или вы не туда вставляете. Quote Link to post Share on other sites
Kors Posted November 15, 2015 Report Share Posted November 15, 2015 в итоге 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 товаров, которые выводятся на текущей странице. То есть реально выводятся отзывы не ко всем товарам бренда, как требовалось, а только к товарам, показываемым на текущей странице. Отсюда вывод - это решение работает правильно, только если все товары бренда умещаются на одной странице. Видимо, автор проверял свое решение лишь в простейших случаях... Quote Link to post Share on other sites
Kors Posted November 15, 2015 Report Share Posted November 15, 2015 И когда я меняю...на....То выводит все отзывы всех товаров разных брендов (224 отзыва).А когда меняю на....То уже выводит 20 отзывов, но все равно не оттуда черпает.Есть у кого то идея что прописать нужно? Заранее благодарю. Идея одна - писать код не методом тыка и копирования из других мест, а хотя бы с небольшим пониманием.Например, когда у Вас встречается $category->id, то для страницы бренда это значение не определено.Что касается остального, например, 'type'=>'brand', то стандартно в Simpla этот параметр не обрабатывается. Если Вы изменяли обработку, то в этой теме неизвестно, где и как Вы проводили изменения... Quote Link to post Share on other sites
mishanya Posted November 15, 2015 Report Share Posted November 15, 2015 Замечание 2. Вы отметили, что "отзывы сортируются по дате добавления, а не идут подряд для каждого товара". Такая сортировка хороша на странице ОДНОГО товара, а в Вашей реализации, когда каждый отзыв к своему товару - сборная солянка. Сомнительно, что серьезному покупателю будет интересно. Его, как правило, интересуют отзывы на товар, который он уже приглядел, а не на все подряд. Я и поставил вопрос, хорошо ли это? Замечание 4. Для извлечения отзывов по брендам в предложенном решении используется$brand_comments = $this->comments->get_comments( array('object_id'=>$products_ids, 'type'=>'product', 'approved'=>1) );Смысл понять легко: извлекаются отзывы к товарам, у которых ID из массива $products_ids. А откуда берется этот массив? Это массив ID товаров, которые выводятся на текущей странице. То есть реально выводятся отзывы не ко всем товарам бренда, как требовалось, а только к товарам, показываемым на текущей странице. Отсюда вывод - это решение работает правильно, только если все товары бренда умещаются на одной странице. Видимо, автор проверял свое решение лишь в простейших случаях... то вы пишите что подряд - плохо, теперь когда поняли что отзывы идут по дате - по дате плохо. нужно по товару который он приглядел (это как выяснять будете? по просмотренным товарам?) замечание 1 о пагинации и 4 имеют место быть. Quote Link to post Share on other sites
Kors Posted November 15, 2015 Report Share Posted November 15, 2015 то вы пишите что подряд - плохо, теперь когда поняли что отзывы идут по дате - по дате плохо. нужно по товару который он приглядел (это как выяснять будете? по просмотренным товарам?)Да, подряд - плохо. И по дате - плохо. Причины объяснил. "по товару который он приглядел" - это хорошо. И это реализовал давно разработчик Simpla на странице товара. "по товару который он приглядел" - было бы хорошо и на странице бренда, но реализовать нереально. Потому что скрипты сайта еще не научились читать мысли посетителя... Я еще в первом посте намекнул, кажется, достаточно ясно, что разработка такого - очень даже не простая. Не просто не только запрограммировать, то даже и не совсем очевидно, как спланировать работу, много тонкостей и много разных возможностей... Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.