Перейти к содержимому


Отзывы в подробном описании


  • Вы не можете ответить в тему
Сообщений в теме: 55

#1 pavel77

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 116 сообщений
Репутация: 10
Начинающий

Отправлено 18 September 2011 - 12:03 AM

Подробное описание как сделать отзывы на странице товара:
Бэкапим два файла design/user/default/product_detailed.tpl.html и includes/product_detailed.php
Итак открываем product_detailed.php Меняем файл или вносим правки:
Строка 22
Redirect("index.php?productID=$productID&discuss=y es");


Меняем
Redirect("index.php?productID=$productID");


Строка 26
Меняем
Redirect("index.php?productID=$productID&discuss=y es");


На
Redirect("index.php?productID=$productID");


Строка 55
Redirect("index.php?productID=$productID&discuss=y es");


Меняем на
Redirect("index.php?productID=$productID");


Строка 59
if (isset($productID) && $productID>0 && (isset($_GET["discuss"]) || isset($_POST["discuss"]))) //show discussion form


Меняем
if (isset($productID) && $productID>0 && (isset($_GET["productID"]) || isset($_POST["productID"]))) //show discussion form


Строка 64
Убираем
$smarty->assign("discuss","yes");


Строка 65
$smarty->assign("main_content_template", "product_discussion.tpl.html");


Меняем
$smarty->assign("main_content_template", "product_detailed.tpl.html");



Сохраняем и идем дальше
Открываем файл product_detailed.tpl.html
Можно выдрать код из product_discussion.tpl.html
Или вставляем гдето после

{if !$printable_version}<table class="adn"><tr><td class="hdbot">[ <a href="#" onclick="open_printable_version('printable.php?pro ductID={$product_info.productID}');">{$smarty.cons t.STRING_PRINTABLE_VERSION}</a>{if $admlink}&nbsp;|&nbsp;<a href="admin.php?productID={$product_info.productID }&amp;eaction=prod">{$smarty.const.EDIT_BUTTON}</a>{/if} ]</td></tr></table>{/if}


{* Обсуждение товара *}
{include file="header.tpl.html" header="`$smarty.const.DISCUSSION_TITLE`: `$product_name`"}

<table class="adn"><tr><td class="message vleft">
{if $product_reviews ne NULL}
{assign var="verifi" value=0}
{section name=i loop=$product_reviews}
{if $verifi eq 1}<table class="adn"><tr></tr></table>{else}{assign var="verifi" value=1}{/if}
<table class="post">
<tr><td class="mid" nowrap="nowrap">{$smarty.const.DISCUSSION_NICKNAME }:&nbsp;&nbsp;</td><td width="100%">{$product_reviews[i].Author} ( {$product_reviews[i].add_time} )</td></tr>
<tr><td style="height: 6px;"></td></tr>
<tr><td class="mid" nowrap="nowrap">{$smarty.const.DISCUSSION_SUBJECT} :&nbsp;&nbsp;</td><td width="100%"><b>{$product_reviews[i].Topic}</b></td></tr>
{if $product_reviews[i][1] ne ""}
<tr><td style="height: 6px;"></td></tr>
<tr><td class="mid" nowrap="nowrap">{$smarty.const.DISCUSSION_BODY}:&n bsp;&nbsp;</td><td width="100%">{$product_reviews[i].Body}</td></tr>
{/if}
</table>
{if $admlink}
<br><a href="index.php?productID={$productID}&amp;discuss =true&amp;remove_topic={$product_reviews[i][3]}">{$smarty.const.DISCUSSION_DELETE_POST_LINK}</a>
{/if}
{/section}
{else}{$smarty.const.DISCUSSION_NO_POSTS_ON_ITEM_S TRING}
{/if}
</td></tr></table>

<a href="javascript:animatedcollapse.toggle('cat')" class="button"><span class="add">Написать новый отзыв</span></a>



<div id="cat" style="width: 100%; background: #fff;">
<table class="adn"><tr><td class="hdbot">&nbsp;</td></tr></table>
{include file="header.tpl.html" header=$smarty.const.DISCUSSION_ADD_MESSAGE}
<table class="adn"><tr><td class="hdbtop vleft">
{if $error ne NULL}<table class="adn"><tr><td class="vcent error cattop">{if $error eq 7}{$smarty.const.ERR_WRONG_CCODE}{else}{$smarty.co nst.FEEDBACK_ERROR_FILL_IN_FORM}{/if}</td></tr></table>{/if}
<form action="index.php" method=post name="formD" id="formD">
<table class="adw">
<tr><td>{$smarty.const.DISCUSSION_NICKNAME}</td></tr>
<tr><td style="height: 3px;"></td></tr>
<tr><td><input type="text" class="inbr" name="nick" maxlength="80" style="width: 200px;" value="{$dis_nic}"></td></tr>
<tr><td style="height: 8px;"></td></tr>
<tr><td>{$smarty.const.DISCUSSION_SUBJECT}</td></tr>
<tr><td style="height: 3px;"></td></tr>
<tr><td><input type="text" class="inbr" name="topic" maxlength="200" style="width: 200px;" value="{$dis_subject}"></td></tr>
<tr><td style="height: 8px;"></td></tr>
<tr><td>{$smarty.const.DISCUSSION_BODY}</td></tr>
<tr><td style="height: 3px;"></td></tr>
<tr><td><textarea style="width:300px; height:100px; background:#ECECEC" name="body" value="{$dis_text}"></textarea></td></tr>
{if $smarty.const.CONF_ENABLE_CONFIRMATION_CODE eq 1}
<tr><td style="height: 8px;"></td></tr>
<tr><td><img src="imgval.php?{php}echo session_name();{/php}={php}echo session_id();{/php}" alt="code"></td></tr>
<tr><td style="height: 3px;"></td></tr>
<tr><td><input name="fConfirmationCode" value="{$smarty.const.STR_ENTER_CCODE}" type="text" class="inbr" style="width: 100px; color: #aaaaaa;" onfocus="if(this.value=='{$smarty.const.STR_ENTER_ CCODE}')
{literal}
{this.style.color='#000000';this.value='';}
{/literal}" onblur="if(this.value=='')
{literal}{{/literal}this.style.color='#aaaaaa';this.value='{$s marty.const.STR_ENTER_CCODE}'{literal}}{/literal}"></td>
</tr>
{/if}
<tr><td><input type="hidden" name="add_topic" value="yes">
<input type="hidden" name="productID" value={$productID}>
<input type="hidden" name="discuss" value="yes">
</td>
</tr>
</table>
</form>
</td></tr></table>


Для того чтобы форма эффектно выезжала :
Качаем вложение (библиотека javascript) ложим например в папку myscript/slide
Открываем head.tpl.html и включаем
<script type="text/javascript" src="полный путь/slide/jquery.js"></script> 
<script type="text/javascript" src="полный путь/slide/animatedcollapse.js"></script>


Затем ниже вставляем
{literal}
<script type="text/javascript">
animatedcollapse.addDiv('jason', 'fade=1,height=80px')
animatedcollapse.addDiv('kelly', 'fade=1,height=100px')
animatedcollapse.addDiv('michael', 'fade=1,height=120px')
animatedcollapse.addDiv('cat', 'fade=0,speed=400,group=pets')
animatedcollapse.addDiv('dog', 'fade=0,speed=400,group=pets,persist=1,hide=1')
animatedcollapse.addDiv('rabbit', 'fade=0,speed=400,group=pets,hide=1')
animatedcollapse.init()
</script>
{/literal}


Дополнительная информация
Здесь эффекты выезжания настраиваем как нравится
animatedcollapse.addDiv('kelly', 'fade=1,height=100px')
animatedcollapse.addDiv('michael', 'fade=1,height=120px')
animatedcollapse.addDiv('cat', 'fade=0,speed=400,group=pets')


Или просто указываем нужный эффект по клику ниже cat а можно например michael kelly и.т.д
<a href="javascript:animatedcollapse.toggle('cat')" class="button"><span class="add">Написать новый отзыв</span></a>

И соответствено заключаем форму в div ниже cat а можно например michael kelly и.т.д
<div id="cat" style="width: 100%; background: #fff;">....Наша форма добавления комментов...</div>


У меня на сайте работает, есть единственный минус - капча при неправильном вводе перекидывает на страницу ошибки, и это плохо

Обновленные файлы замены для версии 3.1.1 во вложении

Прикрепленные файлы

  • Прикрепленный файл  comment.zip   7.9К   9 Количество загрузок:

  • -2

#2 ruter

    Продвинутый пользователь

  • VIP
  • 334 сообщений
Репутация: 151
Мастер

Отправлено 20 September 2011 - 07:23 PM

У меня на сайте работает, есть единственный минус - капча при неправильном вводе перекидывает на страницу ошибки, и это плохо


Эта проблема не только у Вас, ошибка заложена изначально в коде, надо посмотреть и исправить. Попробую на днях. Тоже не хочется, с такой ошибкой запускать сайт.
  • 0

#3 webms

    Пользователь

  • Пользователи
  • PipPip
  • 24 сообщений
Репутация: 0
Начинающий

Отправлено 16 October 2011 - 05:47 PM

а как убрать "тему сообщение"
чтоб не выводилось окно что я его не ввел?
  • 0

#4 vsupport

    Продвинутый пользователь

  • Администраторы
  • 758 сообщений
Репутация: 31
Ассистент

Отправлено 16 October 2011 - 05:54 PM

а для 3.1.2 ?

вносим изменения в эти файлы core\tpl\user\default\product_detailed.tpl.html и core\includes\product_detailed.php
  • 0

#5 pavel77

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 116 сообщений
Репутация: 10
Начинающий

Отправлено 18 October 2011 - 10:37 PM

Ну и как? не получилось разобраться с выводом ошибки капчи?

Эта проблема не только у Вас, ошибка заложена изначально в коде, надо посмотреть и исправить. Попробую на днях. Тоже не хочется, с такой ошибкой запускать сайт.


  • 0

#6 Dbus

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 1116 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 19 October 2011 - 01:27 AM

Ну и как? не получилось разобраться с выводом ошибки капчи?


если без особых заморочек, то в /core/includes/product_discussion.php находим
$error_p = 7;
$smarty->assign("error",$error_p);

и меняем на
Redirect("index.php?productID=$productID");


Теперь при ошибочном вводе кода по крайней мере не будет белого листа, а просто обновится текущая страница. Можно еще алерты добавить, но это уже как кому угодно.
  • 0
502 Bad Gateway

#7 websat

    Пользователь

  • Пользователи
  • PipPip
  • 11 сообщений
Репутация: 1
Начинающий

Отправлено 28 October 2011 - 08:45 AM

Это тоже что и "Комментарии к товару"???
  • 0

#8 Dbus

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 1116 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 28 October 2011 - 09:58 AM

Это тоже что и "Комментарии к товару"???


Нет. Там просто добавляется форматирование и смайлы, как я понял.
  • 0
502 Bad Gateway

#9 sergio3004

    Пользователь

  • Assistent vsupport.club
  • PipPip
  • 29 сообщений
Репутация: 65
Продвинутый
  • ГородМосква

Отправлено 04 November 2011 - 08:19 AM

Хорошо бы инструкцию для версии 3.1.2, там другой файл ни строки ни записи не совпадают, что и на что менять неизвесно.
  • 0

#10 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 23 April 2012 - 06:55 PM

Попробовал поставить это дополнение............ ну хрень полная.

pavel77, Вы если что-то размещаете так хоть проверяйте работает это или нет, а то бредятина какая-то - репутацию понизил пока на 1 бал. Если будет такая чушь повторяться обнулю.

1. Правки в файлах вообще не соответствуют файлам. Начал было править установку - но бессмысленно все равно нихрена не работает. Для начала изменения редиректов вносить нужно не в

Итак открываем product_detailed.php Меняем файл или вносим правки:

а в product_discussion.php

2. Код предложенный для вставки вообще кусок какой-то, кнопки отправить НЕТ вообще, див не закрытый.....

3.

Качаем вложение (библиотека javascript) ложим например в папку myscript/slide

Если копипастите так и вложение перезаливайте - а то качаем откуда? не каждый догадается найти сайт

Да и в конце концов если добавить код из

Можно выдрать код из product_discussion.tpl.html

Можно только кидает на страницу отзывов этот код после добавления.

и такого кода
{if !$printable_version}<table class="adn"><tr><td class="hdbot">[ <a href="#" onclick="open_printable_version('printable.php?pro ductID={$product_info.productID}');">{$smarty.cons t.STRING_PRINTABLE_VERSION}</a>{if $admlink}&nbsp;|&nbsp;<a href="admin.php?productID={$product_info.productID }&amp;eaction=prod">{$smarty.const.EDIT_BUTTON}</a>{/if} ]</td></tr></table>{/if}
и в помине нету в дефотном шаблоне.........


Сегодня напишу свое нормально дополнение и выложу.
  • 0

#11 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 23 April 2012 - 08:24 PM

Сегодня напишу свое нормально дополнение и выложу.

Я подозреваю, что нормальное дополнение для этого случая написать довольно сложно. Я уже переделал форму "есть вопросы по товару?", чтобы она была в табах и после отправки выбирался именно нужный таб с формой, а не дефолтовый с характеристиками. Потихоньку переделываю и форму "обсудить", вставив ее тоже в табы. Но там настолько все привязано к product_detailed.html.tpl каждого конкретного шаблона, что я даже не представляю, как сделать некое универсальное дополнение на уровне "выложить для всех".
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#12 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 24 April 2012 - 01:16 AM

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

Значит
1. Открываем файл \core\tpl\user\default\product_detailed.tpl.html
Где-то перед кодом рекомендуемых товаров например (ну или пофиг кому где удобно):
{if $product_related_number > 0}
Вставляем:
{include file="product_discussion.tpl.html"}

2. Открываем файл \core\includes\product_detailed.php
Перед кодом:
if ( !isset($_GET["vote"]) ) IncrementProductViewedTimes($productID);


Вставляем:
	 //show discussion form
				 $q = db_query("select name from ".PRODUCTS_TABLE." where productID=".$productID." and enabled=1");
				 $a_disc = db_fetch_row($q);
				 if ($a_disc)
				 {
						$smarty->assign("product_name", $a_disc[0]);
						$q = db_query("select count(*) from ".DISCUSSIONS_TABLE." WHERE productID=".$productID);
						$cnt = db_fetch_row($q);
						if ($cnt[0])
						{
								$q = db_query(
										"select Author, Body, add_time, DID, Topic FROM ".DISCUSSIONS_TABLE.
										" WHERE productID=".$productID." ORDER BY add_time DESC");
								$result_disc = array();
								while ($row = db_fetch_row($q))
								{
										$row["add_time"]= format_datetime( $row["add_time"] );
										$result_disc[] = $row;
								}
								$smarty->assign("product_reviews", $result_disc);
	  
						}
						else
						{
								$smarty->assign("product_reviews", NULL);
						}
				 }
product_discussion
3. Открываем файл \core\includes\product_discussion.php

Меняем все 3 редиректа.
Redirect("index.php?productID=$productID&discuss=yes");
на
Redirect("index.php?productID=$productID");

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

Теперь что касается алертов.

Теперь при ошибочном вводе кода по крайней мере не будет белого листа, а просто обновится текущая страница. Можно еще алерты добавить, но это уже как кому угодно.

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

Сейчас попробую свою проверку сделать в тпл. чтобы и не обращалось к пихепе )) но не знаю получится ли, я как-то не очень силен в жаваскрипт.
  • 0

#13 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 24 April 2012 - 09:45 AM

собственно, а кто мешает взять из сессии капчу и сравнивать в tpl
{php}
smarty->assign("captcha123", $_SESSION['captcha_keystring']);
{/php}

{literal}
<script>


function checkCaptcha()
{
captcha_orig = formD.elements["fConfirmationCode"].value;
if ( captcha_orig == {/literal}{$captcha123}{literal})
{
  FormD.submit;
}
else
{
alert ('Неправильный код проверки');
}
}
</script>
{/literal}

<a href="#" onclick="checkCaptcha();">Добавить сообщение</a>

  • 1
Изображение Изображение Изображение

#14 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 24 April 2012 - 10:27 AM

собственно, а кто мешает взять из сессии капчу и сравнивать в tpl


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

Не тут то было

Ошибку выдает
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /core/cache/%%92^926^926B4486%%product_discussion.tpl.html.php on line 5

в 5й строке закрывающий тег php
{/php}

  • 0

#15 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 24 April 2012 - 10:43 AM

вобщем можно убрать блок с {php}, есть еще более простой способ (проверил, работает)

{$smarty.session.captcha_keystring}

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

либо же все таки сделать smarty->assign("captcha123", $_SESSION['captcha_keystring']); в core/includes/processor/captcha.php
и тогда уже в любом месте можно будет получить значение капчи в tpl
  • 0
Изображение Изображение Изображение

#16 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 24 April 2012 - 11:58 AM

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


да с этим способом я пробовал и вставлял и до и после пофиг все равно выводит предыдущую сессию.

но это если рассматривать решение со стороны алерта.

Я не могу понять почему в случае ошибки перекидывает на страницу дисскуссии если ни одного редиректа на нее нет. И в Вопросах к товару - точно такой же код и точно таже ошибка и не перекидывает никуда. Наверное нужно перетягивать код из product_discussion.php в product_detailed.php. И там уже что-то мудрить.
  • 0

#17 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 24 April 2012 - 02:59 PM

Я не стал в конце-концов разбираться, а вместо include file "product_discussion.tpl.html" вставил этот код прямиком в нужное product_detailed.tpl.html, заодно и переделал чуть-чуть читабельнее, а то штатная таблица сообщений дисуссии выглядит ужаснейше.
А в product_discussion.tpl.html убрал вообще табличку вывода дискуссии. При таком раскладе получается, что ошибочная капча приводит к выводу на экран сообщения об ошибочности капчи (без самой дискуссии), где можно вернуться назад, а можно ввсести капчу правильно и тоже вернуться назад. В плюсе то, что сообщение о неправильной капче появляется не ниже экрана, а на видимой части. В минусе - общая кривизна решения :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#18 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 24 April 2012 - 03:59 PM

В плюсе то, что сообщение о неправильной капче появляется не ниже экрана, а на видимой части.


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

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

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

А если можно вернуться назад........ у тебя текст сообщения тоже сохраняются, т.е. поля остаются заполненными?

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

#19 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 24 April 2012 - 08:08 PM

Я так полагаю ты сделал тоже самое но просто удалил из шаблона дискуссии вывод постов

С мелкими нюансами, т.к. у меня "обсудим" это один из табов, но в общем так же.

А если можно вернуться назад........ у тебя текст сообщения тоже сохраняются, т.е. поля остаются заполненными?

Когда попадаю на product_discussion.tpl.html, то да, но если нажать "вернуться на страницу товара" (как-то так), то нет, чистые поля.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#20 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 24 April 2012 - 11:22 PM

Когда попадаю на product_discussion.tpl.html, то да, но если нажать "вернуться на страницу товара" (как-то так), то нет, чистые поля.


тогда эту ссылку лучше убрать :)
  • 0